90分求助!第二个点WA
查看原帖
90分求助!第二个点WA
232277
陈心学习楼主2021/10/16 10:33

代码如下

#include<bits/stdc++.h>
using namespace std;
long long a[100001],n,x,ans;
int f[100001]; 
int main()
{
	cin>>n>>x;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<n;i++)
		if(a[i]+a[i+1]>x) 
		{
			f[i]++;
			f[i+1]++;
		}
	a[n+1]=0;
	for(int i=1;i<n;i++)
	{
		if(f[i]>0)
		{
			if(a[i+1]>=a[i]+a[i+1]-x)
			{
				bool F=0;
				if(a[i+1]+a[i+2]>x) F=1;
				ans+=a[i]+a[i+1]-x;
				a[i+1]-=a[i]+a[i+1]-x;	
				f[i]--;
				f[i+1]--;
				if(F==1&&a[i+1]+a[i+2]<=x) 
				{
					f[i+1]--;
					f[i+2]--;
				}
			}
			else
			{
				bool F=0;
				if(a[i+1]+a[i+2]>x) F=1;
				ans+=a[i]+a[i+1]-x;
				a[i]=a[i]-x;
				a[i+1]=0;
				f[i]--;
				f[i+1]--;
				if(F==1&&a[i+1]+a[i+2]<=x) 
				{
					f[i+1]--;
					f[i+2]--;
				}
			}
		}
	}
	cout<<ans; 
 	return 0;
}

求大佬指点

2021/10/16 10:33
加载中...