80pts WA on #9/#10
查看原帖
80pts WA on #9/#10
1021365
Crab_Tang楼主2023/11/26 14:41
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,mod;
long long nums[N];//存手牌值
long long dp[N];//存特征值
long long Count[N];//存分数
int main(){
	//freopen("test.in","r",stdin);
	scanf("%d %d",&n,&mod);
	for(int i=1;i<=n;++i)
		scanf("%lld",nums+i);
	long long sum=nums[1];
	long long maxx=sum;
	dp[1]=sum;//算特征值
	for(int i=2;i<=n;++i){//算特征值
		if(sum<0)
			sum=nums[i];
		else 
			sum+=nums[i];
		maxx=max(maxx,sum);
		dp[i]=maxx;
	}
	Count[1]=dp[1];
	long long ans=Count[1];
	maxx=Count[1]+dp[1];//第一个小朋友的分数是他的特征值
	for(int i=2;i<=n;++i){//算2~n的分数
		if(maxx<Count[i-1]+dp[i-1])maxx=Count[i-1]+dp[i-1];
		Count[i]=maxx;	
		ans=max(ans,Count[i]);
	}
	ans%=mod;
	printf("%lld",ans);
	return 0;
}

2023/11/26 14:41
加载中...