如题
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5 + 100;
const ll inf = 0x3f3f3f3f3f3f3f3fLL;
ll f[4][N];
ll mapp[4][N];
int n;
int main()
{
scanf("%d",&n);
for(int i = 1 ; i <= 3 ; i ++)
{
for(int j = 1 ; j <= n ; j ++)
{
scanf("%lld",&mapp[i][j]);
}
}
f[1][1] = mapp[1][1],f[2][1]=mapp[1][1]+mapp[2][1],f[3][1]=mapp[1][1]+mapp[2][1]+mapp[3][1];
ll tp2=mapp[1][1]+mapp[2][1]+mapp[3][1],tp1=-inf;
for(int i = 2 ; i <= n ; i ++)
{
f[1][i]=max({f[1][i-1],f[2][i-1]+mapp[2][i],f[3][i-1]+mapp[3][i]+mapp[2][i]})+mapp[1][i];
f[2][i]=max({f[1][i-1]+mapp[1][i],f[2][i-1],f[3][i-1]+mapp[3][i]})+mapp[2][i];
f[3][i]=max({f[1][i-1]+mapp[1][i]+mapp[2][i],f[2][i-1]+mapp[2][i],f[3][i-1]})+mapp[3][i];
tp2=max(tp2,f[1][i-1])+mapp[1][i]+mapp[2][i]+mapp[3][i];
tp1=max(tp1,f[3][i-1])+mapp[1][i]+mapp[2][i]+mapp[3][i];
f[1][i]=max(f[1][i],tp2);
f[3][i]=max(f[3][i],tp1);
}
printf("%lld",f[3][n]);
return 0;
}