fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int g[5][150005];
  4. long long dp[5][5][5][150005][5];
  5. int n;
  6. long long cal(int i,int j,int k){
  7. bool a,b,c;
  8. if((j&1)==1){a=true;}else{a=false;}
  9. if((j&2)==2){b=true;}else{b=false;}
  10. if((j&4)==4){c=true;}else{c=false;}
  11. //cout<<j<<' '<<a<<b<<c<<endl;
  12. if(k==0 && a){return 0;}
  13. if(k==1 && b){return 0;}
  14. if(k==2 && c){return 0;}
  15. if(a && !b && !c){dp[1][0][0][i][0] = dp[1][0][0][i-1][0]+g[0][i];cout<<"100"<<' ';}
  16. if(!a && b && !c){dp[0][1][0][i][1] = dp[0][1][0][i-1][1]+g[1][i];cout<<"010"<<' ';}
  17. if(!a && !b && c){dp[0][0][1][i][2] = dp[0][0][1][i-1][2]+g[2][i];cout<<"001"<<' ';}
  18. if(a && b && !c){dp[1][1][0][i][k] = max(dp[1][1][0][i-1][k]+g[k][i],max(dp[1][0][0][i-1][0]+g[1][i],dp[0][1][0][i-1][1]+g[0][i]));cout<<"110"<<' ';}
  19. if(a && !b && c){dp[1][0][1][i][k] = max(dp[1][0][1][i-1][k]+g[k][i],max(dp[1][0][0][i-1][0]+g[2][i],dp[0][0][1][i-1][1]+g[0][i]));cout<<"101"<<' ';}
  20. if(!a && b && c){dp[0][1][1][i][k] = max(dp[0][1][1][i-1][k]+g[k][i],max(dp[0][0][1][i-1][0]+g[1][i],dp[0][1][0][i-1][1]+g[2][i]));cout<<"011"<<' ';}
  21. if(a && b && c){dp[1][1][1][i][k] = max(dp[1][1][1][i-1][k]+g[k][i] , max(dp[1][1][0][i-1][k]+g[2][i],max(dp[1][0][1][i-1][k]+g[1][i],dp[0][1][1][i-1][k]+g[0][i])));cout<<"111"<<endl;}
  22. cout<<i<<' '<<j<<' '<<k<<' '<<dp[j&1][j&2][j&4][i][k]<<' '<<a<<b<<c<<endl;
  23. return dp[j&1][j&2][j&4][i][k];
  24. }
  25. int solve(){
  26. dp[1][0][0][0][2]=g[0][0];
  27. dp[0][1][0][0][2]=g[1][0];
  28. dp[0][0][1][0][2]=g[2][0];
  29. for(int i = 1;i<n;i++){
  30. for(int j = 0;j<8;j++){
  31. for(int k = 0;k<3;k++){
  32. dp[j&1][j&2][j&4][i][k]=cal(i,j,k);
  33. }
  34. }
  35. }
  36. return max(dp[0][0][0][n-1][0],max(dp[0][0][0][n-1][1],dp[0][0][0][n-1][2]));
  37. }
  38. int main() {
  39. cin>>n;
  40. for(int i = 0;i<3;i++){
  41. for(int j = 0;j<n;j++){
  42. cin>>g[i][j];
  43. }
  44. }
  45. cout<<solve()<<endl;
  46. return 0;
  47. }
Success #stdin #stdout 0s 750592KB
stdin
3
1 3 3
1 1 1
1 2 3
stdout
1 0 0 0 000
1 0 1 0 000
1 0 2 0 000
100 1 1 1 0 100
100 1 1 2 0 100
010 1 2 0 0 010
010 1 2 2 0 010
110 1 3 2 0 110
001 1 4 0 0 001
001 1 4 1 0 001
101 1 5 1 0 101
011 1 6 0 0 011
2 0 0 0 000
2 0 1 0 000
2 0 2 0 000
100 2 1 1 0 100
100 2 1 2 0 100
010 2 2 0 0 010
010 2 2 2 0 010
110 2 3 2 0 110
001 2 4 0 0 001
001 2 4 1 0 001
101 2 5 1 0 101
011 2 6 0 0 011
0