#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
long long int a[n];
for(int k=0;k<n;k++){cin>>a[k];}
long long int RtoLsum[2][n];
long long int LtoRsum[2][n];
for(int i=0;i<n;i++){RtoLsum[0][i]=0;RtoLsum[1][i]=0;LtoRsum[0][i]=n-1;LtoRsum[1][i]=0;}
for(int k=1;k<n;k++){
if(a[k]>a[k-1]){
long long int sum=0;
int i=k-1;
for(;a[i]<a[k];){
sum+=a[i];
if(i==RtoLsum[0][i]){i--;}
else{
sum+=RtoLsum[1][i];
i=RtoLsum[0][i];
}
if(i<=0){i=0;break;}
}
RtoLsum[0][k]=i;
RtoLsum[1][k]=sum;
}else if(a[k]<=a[k-1]){RtoLsum[0][k]=k;}
}
for(int k=n-2;k>=0;k--){
if(a[k]>a[k+1]){
long long int sum=0;
int i=k+1;
for(;a[i]<a[k];){
sum+=a[i];
if(i==LtoRsum[0][i]){i++;}
else{
sum+=LtoRsum[1][i];
i=LtoRsum[0][i];
}
if(i>=n-1){i=n-1;break;}
}
LtoRsum[0][k]=i;
LtoRsum[1][k]=sum;
}else if(a[k]<=a[k+1]){LtoRsum[0][k]=k;}
}
for(int k=0;k<n;k++){long long int x=LtoRsum[1][k]+RtoLsum[1][k];cout<<x<<endl;}
}
}
以上 還是會TLE還有RE,而且也有部分答案錯 請問各位高手有那些部份可以優化,謝謝幫忙