蒟蒻の求助%%orzorz
查看原帖
蒟蒻の求助%%orzorz
388718
wjk20050306楼主2021/9/24 20:27

60分,不是超时或超空间问题

#include<cstdio>
#include<cmath>
#include<algorithm>
#define int long long
using namespace std;
int n,p,num[1000005];
int ans=-1000000009,pts[1000005],val[1000005][2];
void init(){
	scanf("%lld%lld",&n,&p);
	for(int i=1;i<=n;i++){
		scanf("%lld",&num[i]);
	}
}
void solveval(){
	val[1][1]=num[1];
	val[1][0]=0;
	for(int i=2;i<=n;i++){
		val[i][0]=max(val[i-1][0],val[i-1][1]);
		val[i][1]=max(val[i-1][1]+num[i],num[i]);
	}
}
void solvepts(){
	pts[1]=val[1][1];
	for(int i=2;i<=n;i++){
		pts[i]=max(pts[i-1],max(val[i-1][1],val[i-1][0])+pts[i-1]);
	}
}
void output(){
	for(int i=1;i<=n;i++){
		ans=max(ans,pts[i]);
	}
	if(ans<0) printf("-");
	printf("%lld",abs(ans)%p);
}
signed main(){
	init();
	solveval();
	solvepts();
	output();
	return 0;
} 

感谢各位dalao!!!

2021/9/24 20:27
加载中...