下载数据本地过了,结果爆0了
查看原帖
下载数据本地过了,结果爆0了
733553
huangluyi2008楼主2022/8/31 14:16

贴代码

#include<iostream>
using namespace std;
int n,p;
__int128 a[1000005],t[1000005],v[1000005],tmp,maxx=-1e18,ans=-1e18;
inline void read(__int128 &x){
	bool f=0;
	x=0;
	char c=getchar();
	if(c=='-'){
		f=1;
		c=getchar();
	}
	while(c<='9'&&c>='0'){
		x=x*10+c-'0';
		c=getchar();
	}
	if(f) x=-x;
}
inline void print(__int128 x){
	if(x<0){
		putchar('-');
		x=-x;
	} 
	if(x>9) print(x/10);
	putchar(x%10+48);
	return;
}
int main(){
	ios::sync_with_stdio(false);
	cin>>n>>p;
	for(int i=1;i<=n;++i){
		read(a[i]);
	}
	v[1]=t[1]=tmp=ans=a[1];
	for(int i=2;i<=n;++i){
		if(tmp<0) tmp=0;
		tmp+=a[i];
		maxx=max(maxx,tmp);
		t[i]=maxx;
	}
	__int128 maxn=t[1]+v[1];
	for(int i=2;i<=n;++i){
		v[i]=maxn;
		ans=max(ans,v[i]);
		maxn=max(maxn,t[i]+v[i]);
	}
	print(ans%p);
//	putchar('\n');
//	for(int i=1;i<=n;++i){
//		print(a[i]);
//		putchar(' ');
//	}
//	putchar('\n');
//	for(int i=1;i<=n;++i){
//		print(t[i]);
//		putchar(' ');
//	}
//	putchar('\n');
//	for(int i=1;i<=n;++i){
//		print(v[i]);
//		putchar(' ');
//	}
	return 0;
}
2022/8/31 14:16
加载中...