10分求助
查看原帖
10分求助
511408
abcyz楼主2021/10/19 09:15
#include<bits/stdc++.h>
using namespace std;
	unsigned long long n,p,a[1000010],dp[1000010],f[1000010],maxn,mmaxn;
int main(){
	cin>>n>>p;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	dp[1]=a[1];
	for(int i=2;i<=n;i++){
		dp[i]=max(dp[i-1]+a[i],a[i]);
	}
	f[1]=dp[1];
	maxn=f[1]+dp[1];
	for(int i=2;i<=n;i++){
		f[i]=maxn;
		if(maxn<=f[i]+dp[i]){
			maxn=f[i]+dp[i];
		}
	}	
	sort(f+1,f+n+1);
	long long k=f[n];
	if(k<0)
		cout<<'-';
	k=abs(k);
	cout<<k%p;	
//	mmaxn=f[1];
//	for(int i=1;i<=2;i++)
//		mmaxn=max(mmaxn,f[i]);	
//	cout<<mmaxn;
	return 0;
}

谢谢各位了

2021/10/19 09:15
加载中...