10分求助(样例过了)
查看原帖
10分求助(样例过了)
443649
NATO楼主2021/10/6 15:21
#include<bits/stdc++.h>
using namespace std;
long long x,f[1000001],s,t=0,maxn,mq,ans=-100000998812;    
long long n,h[1000001],p,a[1000001],pre;  
void fx()
{
	mq=a[1];
	pre=a[1];
	for(long long i=2;i<=n;++i)
	{
	if(pre<0) pre=0;
    pre+=a[i];
    mq=max(ans,mq);
    h[i]=mq;
	}
}
int main() 
{	
	ios::sync_with_stdio(0);
	//freopen("hpp1.in","r",stdin);
	//freopen("hpp1.out","w",stdout);
	cin>>n>>p;
	for(long long i = 1; i <= n; i++) 
		cin>>a[i];
	fx();
	f[1]=h[1];
	maxn=f[1]+h[1];
	for(long long i=2;i<=n;++i)
	{
		f[i]=maxn%p;
		if(f[i]+h[i]>maxn)
		maxn=(h[i]+f[i])%p;
	}
	for(long long i=1;i<=n;++i)
	if(f[i]>ans)
	ans=f[i];
	if(ans<0)
	cout<<'-';
	cout<<abs(ans)%p;
	return 0;
}
2021/10/6 15:21
加载中...