40求条
查看原帖
40求条
1314334
Laoda_Bryant楼主2024/8/3 11:49
#include<bits/stdc++.h>
using namespace std;
int n,a[10005],lp,rp,l,r,ans=0,d;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	l=1,r=n,d=0;
	while(!a[l]&&l<=n) l++;
	while(!a[r]&&r>=1) r--;
	while(1!=114514){
		//cout<<l<<" "<<r<<endl<<ans<<endl;
		if(l>=r) break; 
		lp=a[l],rp=a[r];
		int mw=min(lp,rp);
		ans+=(r-l-1)*(mw-d);
		for(int i=l+1;i<=r-1;i++){
			int g=a[i]-d;
			if(g<0) g=0;
			ans-=min(g,mw);
		}
		if(a[l]>a[r]){
			int rr=a[r];
			while(a[r]<=rr){
				r--;
			if(l>=r) break; 
			}
		}else if(a[l]<a[r]){
			int ll=a[l];
			while(a[l]<=ll){
				l++;
			if(l>=r) break; 
			}
		}else{
			int ll=a[l],rr=a[r];
			while(a[l]<=ll&&a[r]<=rr){
			l++,r--;
			if(l>=r) break; 
			}
		}
		d=mw;
	}
	cout<<ans;
	return 0;
}

2024/8/3 11:49
加载中...