70分求调
查看原帖
70分求调
1523138
huxuanrui19楼主2024/12/23 22:39

代码如下

#include<iostream>
using namespace std;
const int N=1e4+5;
long long h[N],s[N];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>h[i];
		s[i]=s[i-1]+h[i];
	}
	long long l=2,r=0,flag=0,maxn=h[2],area=0;
	for(int i=3;i<=n-1;i++)
	{
		if(h[i]<maxn)
		{
			flag=1;
			r=i;
		}
		else
		{
			r=i;
			if(flag==1)
			{
				area+=(r-l-1)*min(maxn,h[i])-(s[r-1]-s[l]);
				l=r;
				flag=0;
				maxn=max(maxn,h[i]);
			}
			else
			{
				maxn=max(maxn,h[i]);
				l=i;
			}
		}
	}
	cout<<area;
}
2024/12/23 22:39
加载中...