我整个人都傻了,求助
查看原帖
我整个人都傻了,求助
294562
EDqwq楼主2020/9/11 20:32

RT,我的思路绝对是没问题的,但就是错了

#include<bits/stdc++.h>

#define int long long

using namespace std;

int read(){
   int s = 0,w = 1;
   char ch = getchar();
   while(ch < '0' || ch > '9'){if(ch == '-')w = -1;ch = getchar();}
   while(ch >= '0' && ch <= '9')s = s * 10 + ch - '0',ch = getchar();
   return s * w;
}

int n,p;
int a[1000010];
int b[1000010];
int dp[1000010];
int ans[1000010];
int mx;
int anss = -21000000000;

signed main(){
	cin>>n>>p;
	for(int i = 1;i <= n;i ++){
		cin>>a[i];
		//memset(dp,0,sizeof(dp));
		//ans = -2100000;
		dp[i] = max(dp[i - 1] + a[i],a[i]);
		b[i] = dp[i] % p;
	}
	ans[1] = b[1];
	mx = ans[1] + b[1];
	for(int i = 2;i <= n;i ++){
		ans[i] = mx;
		mx = max(mx,ans[i] + b[i]);
		if(anss < mx)anss = mx % p;
	}
	for(int i = 1;i <= n;i ++)cout<<ans[i]<<" ";
	cout<<endl;
	//for(int i = 1;i <= n;i ++)anss = max(anss,ans[i]);
	cout<<anss;
	return 0;
}

2020/9/11 20:32
加载中...