#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+5;
int a[maxn],l[maxn],r[maxn],ans[maxn],n,t,s;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],a[n+i]=i;
l[1]=0;
for(int i=2;i<=n*2;i++){
int x=i-1;
while(a[x]>=a[i]&&x) x=l[x];
l[i]=x;
}
r[n*2]=n*2+1;
for(int i=n*2-1;i;i--){
int x=i+1;
while(a[x]>a[i]&&x&&x!=n*2+1) x=r[x];
r[i]=x;
}
for(int i=1;i<=n;i++){
if(a[i]<a[t]||!t) t=i;
s+=a[i];
}
for(int i=t+1;i<=t+n;i++){
if(a[i]==a[t]) continue;
int x=r[i]-l[i]-1,y=a[i]-max(a[l[i]]+1,a[r[i]]+1)+1;
ans[1]+=y,ans[x+1]-=y;
}
for(int i=1;i<=n;i++) ans[i]+=ans[i-1];
for(int i=1;i<=n;i++) ans[i]+=ans[i-1],cout<<s-ans[i]<<' ';
}
哪儿错了?