40pts求调
查看原帖
40pts求调
1342225
liusizhe88楼主2024/10/19 10:01
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int a[maxn],b[maxn],c[maxn],d[maxn];
int main(){
	long long n,p,ans=-2147483648;
	cin>>n>>p;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	fill(d,d+n,-2147483648);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=i;j++){
			   	if(j==1){
				   	d[j]=a[j];
				} 
			   	else{
				   	d[j]=max(a[j],a[j]+d[j-1]);
				} 
			   	ans=max(ans,d[j]);
		}
		b[i]=ans;
	}
	c[1]=b[1];
	c[2]=b[1]+c[1];
	for(int i=2;i<=n;i++){
		c[i]=max(c[i-1],c[i-1]+b[i-1]);
	}
//	for(int i=1;i<=n;i++){
//		cout<<a[i]<<" "<<b[i]<<" "<<c[i]<<endl;
//	}
	cout<<c[n]%p;
	return 0;
}
2024/10/19 10:01
加载中...