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;
}