Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int mxN = 1e5;
- typedef long long ll;
- ll st[mxN+1], l[mxN+1], r[mxN+1], v[mxN+1];
- int main()
- {
- ll sol = 0, n, top = 0 ;
- cin>>n;
- for(int i = 1;i<=n;i++)
- {
- cin>>v[i];
- while(top > 0 && v[st[top]] < v[i])
- r[st[top]] = i, top--;
- st[++top] = i;
- }
- while(top>0) r[st[top]] = n+1, top--;
- for(int i = n;i>0;i--)
- {
- while(top > 0 && v[st[top]] < v[i])
- l[st[top]] = i, top--;
- st[++top] = i;
- }
- for(int i = 1;i<=n;i++)
- {
- ll A = i - l[i];
- ll B = r[i] - i;
- sol+= v[i] * A*B;
- }
- cout<<sol<<'\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement