Advertisement
Hezov

SumMaxSecv

Sep 30th, 2024
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. const int mxN = 1e5;
  4. typedef long long ll;
  5. ll st[mxN+1], l[mxN+1], r[mxN+1], v[mxN+1];
  6. int main()
  7. {
  8.     ll sol = 0, n, top = 0 ;
  9.     cin>>n;
  10.     for(int i = 1;i<=n;i++)
  11.     {
  12.         cin>>v[i];
  13.         while(top > 0 && v[st[top]] < v[i])
  14.             r[st[top]] = i, top--;
  15.         st[++top] = i;
  16.     }
  17.     while(top>0) r[st[top]] = n+1, top--;
  18.     for(int i = n;i>0;i--)
  19.     {
  20.         while(top > 0 && v[st[top]] < v[i])
  21.             l[st[top]] = i, top--;
  22.         st[++top] = i;
  23.     }
  24.     for(int i = 1;i<=n;i++)
  25.     {
  26.         ll A = i - l[i];
  27.         ll B = r[i] - i;
  28.         sol+= v[i] * A*B;
  29.     }
  30.     cout<<sol<<'\n';
  31.     return 0;
  32. }
  33.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement