Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define pb push_back
- #define ll long long int
- #define inf -2000000000
- #define pi (2.0*acos(0.0))
- #define vsort(v) sort(v.begin(),v.end())
- #define ull unsigned long long int
- #define mem(a, b) memset(a, b, sizeof a)
- ll a[100], lft[100], r8[100], ind[100];
- ll n, i, j, k, p, q;
- stack<ll>s;
- int main()
- {
- while(scanf("%lld", &n)==1){
- for(i=1; i<=n; i++)scanf("%lld", &a[i]);
- s.push(inf);
- ind[0]=0;
- for(i=1; i<=n; i++){
- while(1){
- if(s.top()>=a[i])s.pop();
- else{
- s.push(a[i]);
- ind[s.size()-1]=i;
- lft[i]=ind[s.size()-2]+1;
- break;
- }
- }
- }
- /*for(i=1; i<=n; i++)printf("%lld ", lft[i]);
- printf("\n");*/
- while(!s.empty())s.pop();
- mem(ind, 0);
- s.push(inf);
- ind[0]=n+1;
- for(i=n; i>=1; i--){
- if(a[i]<s.top())s.pop();
- while(1){
- if(a[i]<=s.top())s.pop();
- else{
- s.push(a[i]);
- ind[s.size()-1]=i;
- r8[i]=ind[s.size()-2]-1;
- break;
- }
- }
- }
- /*for(i=1; i<=n; i++)printf("%lld ",r8[i]);
- printf("\n\n");*/
- ll mx = 0;
- for(i=1; i<=n; i++){
- mx = max(mx, ((r8[i]-lft[i])+1)*a[i]);
- printf("%lld ",((r8[i]-lft[i]+1)*a[i]));
- }
- printf("\n");
- /*printf("%lld\n", mx);*/
- while(!s.empty())s.pop();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement