70分求助

P1982 [NOIP2013 普及组] 小朋友的数字

?(没看到)
by rwhy @ 2023-12-16 00:04:25


@[brave_gentleman](/user/372326) 想帮你,可惜我不会。。
by jeffstart @ 2023-12-16 00:04:55


``` #include<bits/stdc++.h> using namespace std; __int128 n,ans,a[1145140],f[1145140],b[1145140],c[1145140],s[1145140],mod; __int128 fcin() { __int128 sto=0,momomo=1; char orz=getchar(); while(orz>'9'||orz<'0') { if(orz=='-') momomo=-1; orz=getchar(); } while(orz>='0'&&orz<='9') sto=sto*10+orz-'0',orz=getchar(); return sto*momomo; } void fcout(__int128 tt) { if(tt<0) { putchar('-'); fcout(-tt); return; } char ttt=tt%10+'0'; if(tt>=10) fcout(tt/10); putchar(ttt); } __int128 maxx(__int128 x,__int128 y){return x>y ? x : y;} __int128 minn(__int128 x,__int128 y){return x<y ? x : y;} inline __int128 abss(__int128 x) { if(x>=0)return x; return -x; } int main() { n=fcin(),mod=fcin(); for(__int128 i=1;i<=n;i++) a[i]=fcin(); b[1]=s[1]=f[1]=a[1]; for(__int128 i=2;i<=n;++i) { f[i]=maxx(f[i-1]+a[i],a[i]); b[i]=maxx(b[i-1],f[i]); } c[1]=b[1]; s[1]=b[1]+c[1]; ans=c[1]; for(__int128 i=2;i<=n;i++) { c[i]=s[i-1]; s[i]=maxx(s[i-1],c[i]+b[i]); ans=maxx(ans,c[i]); } if(ans>=0) ans=ans%mod; else ans=-(abss(ans)%mod); fcout(ans); return 0; } ``` 我朋友的代码
by rwhy @ 2023-12-16 00:05:51


@[brave_gentleman](/user/372326)
by rwhy @ 2023-12-16 00:06:29


@[rwhy](/user/1001535) 谢
by brave_gentleman @ 2023-12-16 00:23:08


|