WA on #12 #18 #24
附代码,WA点普遍答案数据大
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x*f;
}
int n,ans;int val[5][100005];
int f[5][100005];
inline int maxi(int a,int b,int c){
if(a>=b&&a>=c)return a;
if(b>=c)return b;
return c;
}
signed main(){
n=read();
for(int i=1;i<=3;i++){
for(int j=1;j<=n;j++)val[i][j]=read();
}
f[1][1]=val[1][1];f[2][1]=f[1][1]+val[2][1];f[3][1]=f[2][1]+val[3][1];
for(int i=2;i<=n;i++){
f[1][i]=maxi(f[1][i-1],f[2][i-1]+val[2][i],f[3][i-1]+val[2][i]+val[3][i])+val[1][i];
f[2][i]=maxi(f[2][i-1],f[1][i-1]+val[1][i],f[3][i-1]+val[3][i])+val[2][i];
f[3][i]=maxi(f[3][i-1],f[2][i-1]+val[2][i],f[1][i-1]+val[2][i]+val[1][i])+val[3][i];
if(i>=3){
int mid=val[1][i]+val[2][i]+val[3][i]+val[1][i-1]+val[2][i-1]+val[3][i-1];
f[1][i]=max(f[1][i],f[3][i-2]+mid);
f[3][i]=max(f[3][i],f[1][i-2]+mid);
}
}
cout<<f[3][n];
return 0;
}