fork download
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. int d[10005][2][2][2][2] = {0};
  5. int y[10005][5];
  6. signed main(){
  7. ios_base::sync_with_stdio(false);
  8. cin.tie(0);
  9. int n;
  10. cin >> n;
  11. int maxs = -1e18;
  12. int ans = -1e18;
  13. int oooo = 1;
  14. while(oooo <= 4){
  15. for(int i = 1; i <= n; i ++ ) {
  16. cin >> y[i][oooo];
  17. ans = max(y[i][oooo], ans);
  18. }
  19. oooo++;
  20. }
  21.  
  22. for(int i = 1; i <= n; i ++ ) {
  23. ///0001
  24. d[i][0][0][0][1] = max
  25. ({
  26. y[i][4],
  27. y[i][4] + d[i-1][1][0][0][0],
  28. y[i][4] + d[i-1][0][1][0][0],
  29. y[i][4] + d[i-1][0][0][1][0],
  30. y[i][4] + d[i-1][1][0][1][0],
  31. y[i][4] + d[i-1][0][0][0][0]
  32. });
  33. ///0010
  34. d[i][0][0][1][0] = max
  35. ({
  36. y[i][3],
  37. y[i][3] + d[i-1][1][0][0][0],
  38. y[i][3] + d[i-1][0][1][0][0],
  39. y[i][3] + d[i-1][0][0][0][1],
  40. y[i][3] + d[i-1][0][1][0][1],
  41. y[i][3] + d[i-1][1][0][0][1],
  42. y[i][3] + d[i-1][0][0][0][0]
  43. });
  44. ///0100
  45. d[i][0][1][0][0] = max
  46. ({
  47. y[i][2],
  48. y[i][2] + d[i-1][1][0][0][0],
  49. y[i][2] + d[i-1][0][0][1][0],
  50. y[i][2] + d[i-1][0][0][0][1],
  51. y[i][2] + d[i-1][1][0][1][0],
  52. y[i][2] + d[i-1][1][0][0][1],
  53. y[i][2] + d[i-1][0][0][0][0]
  54. });
  55. ///1000
  56. d[i][1][0][0][0] = max
  57. ({
  58. y[i][1],
  59. y[i][1] + d[i-1][0][1][0][1],
  60. y[i][1] + d[i-1][0][1][0][0],
  61. y[i][1] + d[i-1][0][0][1][0],
  62. y[i][1] + d[i-1][0][0][0][1],
  63. y[i][1] + d[i-1][0][0][0][0]
  64. });
  65. ///1010
  66. d[i][1][0][1][0] = max
  67. ({
  68. y[i][1] + y[i][3],
  69. y[i][1] + y[i][3] + d[i-1][0][1][0][0],
  70. y[i][1] + y[i][3] + d[i-1][0][1][0][1],
  71. y[i][1] + y[i][3] + d[i-1][0][0][0][1],
  72. y[i][1] + y[i][3] + d[i-1][0][0][0][0]
  73. });
  74. ///1001
  75. d[i][1][0][0][1] = max
  76. ({
  77. y[i][1] + y[i][4],
  78. y[i][1] + y[i][4] + d[i-1][0][1][0][0],
  79. y[i][1] + y[i][4] + d[i-1][0][0][1][0],
  80. y[i][1] + y[i][4] + d[i-1][0][0][0][0]
  81. });
  82. ///0101
  83. d[i][0][1][0][1] = max
  84. ({
  85. y[i][2] + y[i][4],
  86. y[i][2] + y[i][4] + d[i-1][1][0][0][0],
  87. y[i][2] + y[i][4] + d[i-1][0][0][1][0],
  88. y[i][2] + y[i][4] + d[i-1][1][0][1][0],
  89. y[i][2] + y[i][4] + d[i-1][0][0][0][0]
  90. });
  91. ///0000
  92. d[i][0][0][0][0] = max
  93. ({
  94. d[i-1][1][0][0][0],
  95. d[i-1][0][1][0][0],
  96. d[i-1][0][0][1][0],
  97. d[i-1][0][0][0][1],
  98. d[i-1][1][0][1][0],
  99. d[i-1][1][0][0][1],
  100. d[i-1][0][1][0][1],
  101. d[i-1][0][0][0][0]
  102. });
  103. maxs = max({maxs, d[i][0][1][0][0], d[i][1][0][0][0],
  104. d[i][0][0][1][0], d[i][0][0][0][1],
  105. d[i][1][0][1][0], d[i][0][1][0][1],
  106. d[i][1][0][0][1], d[i][0][0][0][0]
  107. });
  108. }if(maxs != 0)
  109. cout << maxs;
  110. else cout <<ans;
  111. return 0;
  112. }
  113. ///| /\_/\
  114. ///| (= ._.) ?
  115. ///| / >0 \>1
Runtime error #stdin #stdout 0.04s 5288KB
stdin
Standard input is empty
stdout
Standard output is empty