单调栈还没有完全理解...写了个优雅的暴力AC了...
#include#include #include #include using namespace std;const int maxn=100000+10;long long a[maxn],sum[maxn];int L[maxn],R[maxn];int n;int main(){ while(~scanf("%d",&n)) { sum[0]=0; for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); sum[i]=sum[i-1]+a[i]; } for(int i=1;i<=n;i++) L[i]=i; for(int i=2;i<=n;i++) { if(a[i]>a[i-1]) continue; int pre=L[i-1]; while(1) { L[i]=pre; if(pre==1||a[pre-1] =1;i--) R[i]=i; for(int i=n-1;i>=1;i--) { if(a[i]>a[i+1]) continue; int pre=R[i+1]; while(1) { R[i]=pre; if(pre==n||a[pre+1]