80分求调,9,10,12点WA
查看原帖
80分求调,9,10,12点WA
1208314
The_Collector楼主2024/6/11 13:01

以下是80分代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1000005;
int a[N],dp[N],q[N],fs[N];
int n,mod,maxx,flag;
signed main(){
	cin>>n>>mod;
	for (int i=1;i<=n;i++){
		cin>>a[i];
	}
	fs[1] = dp[1] = q[1] = a[1];
	maxx = a[1];
	for(int i=2;i<=n;i++){
		dp[i] = max(dp[i-1]+a[i],a[i]);
		q[i] = max(q[i-1],dp[i]);
	}
	fs[2] = fs[1]+a[1];
	maxx = max(maxx,fs[2]);
	for (int i=3;i<=n;i++){
		if(fs[i-1]+q[i-1]<0 && fs[i-1]>0){
			flag=1;
		}
		if(flag){
			fs[i]=(fs[i-1]%mod+q[i-1]%mod)%mod;
		}
		fs[i] = max(fs[i-1],q[i-1]+fs[i-1]);
		maxx = max(maxx, fs[i]);
	}
	if(flag==1){
		cout<<fs[n]%mod<<endl;
	}
	else{
		cout << maxx % mod << endl;	
	} 
	return 0;
}

2024/6/11 13:01
加载中...