80,求助
查看原帖
80,求助
544446
Demon_master楼主2022/3/11 00:19
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn = 1000000+231;
const ll MOD=10007;

inline ll read_int(){
    ll a=0,f=1,g=getchar();
    while(g<'0'||g>'9'){if(g=='-') f=-1;g=getchar();}
    while(g>='0'&&g<='9') a=a*10+g-'0',g=getchar();
    return a*f;
}

inline void write(ll a,ll b){
	if(a<0) a=-a,putchar('-');
	ll lin[40],cnt=0;
	while(a) lin[++cnt]=a%10,a/=10;
	if(!cnt) cnt++,lin[cnt]=0;
	while(cnt) putchar(lin[cnt]+'0'),cnt--;
	if(b) putchar('\n');
}

ll sj[maxn],mod,n,spcio[maxn],gade[maxn],ans=-1e18;

inline void read(){
	n=read_int(),mod=read_int();
	for(ll i=1;i<=n;i++) sj[i]=read_int();
	ll maxxn=-1e18,maxx=-1e18,lin=0,c=0;
	for(ll i=1;i<=n;i++){
		lin+=sj[i];
		maxxn=max(maxxn,sj[i]);
		if(lin<0) lin=0;
		else maxx=max(maxx,lin),c++;
		if(c==0) spcio[i]=maxxn;
		else spcio[i]=maxx;
	}
	gade[1]=spcio[1];
	for(ll i=2;i<=n;i++){
		ans=max(ans,gade[i-1]+spcio[i-1]);
		gade[i]=ans;
	}
	write(max(ans,gade[1])%mod,1);
}

int main (){
	read();
}

记录

2022/3/11 00:19
加载中...