10分????!!!!
查看原帖
10分????!!!!
490651
zcy942楼主2021/7/9 20:51

这怎么可能嘛

哪位dalao看看呗

#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;

inline __int128 read(){
    __int128 x=0,f=1;
    char ch=getchar();
    while(ch<'0' || ch>'9'){
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9'){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}

inline void write(__int128 x){
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9) write(x/10);
    putchar(x%10+'0');
}

int main(){
	__int128 n=read(),p=read(),a[n],b[n],c[n];
    for(__int128 i=0;i<n;i++) a[i]=read();
    __int128 maxint=a[0];
    b[0]=a[0];
    for(__int128 i=1,ans=a[0];i<n;i++){
        ans+=a[i];
        if(ans>maxint) maxint=ans;
        else ans=maxint;
        b[i]=maxint;
    }
    c[0]=b[0];
    maxint=c[0];
    __int128 em=b[0]*2;
    for(__int128 i=1;i<n;i++){
        c[i]=em;
        if((b[i]+c[i])>em) em=b[i]+c[i];
        if(c[i]>maxint) maxint=c[i];
    }
    write(maxint%p);
	return 0;
}
虽然用了__int128但这样至少也能水过去吧
2021/7/9 20:51
加载中...