80求调
查看原帖
80求调
973926
EasonPanYiFei110613楼主2024/11/10 11:18
#include<iostream>
#include<cmath>
typedef long long ll;
using namespace std;
const int M=1000005;
int c=1,d,s=0;
ll a[M],b[M],f[M];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=n-1;i++)
	{
		a[i+n]=a[i];
	}
	for(int i=1;i<=2*n-1;i++)
	{
		b[i]=b[i-1]+a[i];
	}
	for(int i=1;i<=2*n-1;i++)
	{
		while(c<=d && max(i-n+1,1)>f[c])
		c++;
		while(c<=d && b[i]<=b[f[d]])
		d--;
		f[++d]=i;
		if(i-n+1>0 && b[f[c]]-b[i-n]>=0) s++; 
	}
	cout<<s<<endl;
	return 0;
}



2024/11/10 11:18
加载中...