mxqz第9个点不过
查看原帖
mxqz第9个点不过
305895
Take_A_Single_6楼主2021/7/28 14:21
#include<bits/stdc++.h>
#define int __int128
using namespace std;
__int128 abs(__int128 x)
{
    return x<0?-x:x;
} 
int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9') f=ch=='-'?-1:1,ch=getchar();
	while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); 
	return x*f;
}
void print(int x)
{
	char P[105];int w=0;
	if(x<0) putchar('-'),x=-x; 
	while(x) P[++w]=x%10+'0',x/=10;
	for(int i=w; i>=1; i--) putchar(P[i]);
}
signed main()
{
    int n,p;
    n=read(),p=read();
    int a[n],dp[n]={0},tz[n]={0},sc[n]={0},ans=-1e19;
    for(int i=0;i<n;i++)a[i]=read(),dp[i]=a[i];
    for(int i=1;i<n;i++)
        dp[i]=max(dp[i],dp[i-1]+dp[i]);
    tz[0]=dp[0];
    for(int i=1;i<n;i++)
        tz[i]=max(tz[i-1],dp[i]);
    sc[0]=tz[0];
    for(int i=1;i<n;i++)
        sc[i]=sc[i-1]+tz[i-1];
    for(int i=0;i<n;i++)
        ans=max(ans,sc[i]);
    if(ans<0)cout<<"-";
    cout<<(long long)(abs(ans)%p);
    return 0;
}
2021/7/28 14:21
加载中...