fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. template<class T, class S, class U> inline void DigitF_L(T n, int sz, S res[], U b){
  5. int i;
  6. for(i=(0);i<(sz);i++){
  7. res[i] = n % b;
  8. n /= b;
  9. }
  10. }
  11. template<class S, class T> inline S chmax(S &a, T b){
  12. if(a<b){
  13. a=b;
  14. }
  15. return a;
  16. }
  17. #define main dummy_main
  18. int main(){
  19. return 0;
  20. }
  21. #undef main
  22. int fg;
  23. int answer[6][6][7][7];
  24. int dp[7][7][243];
  25. int nx[7][7][243];
  26. int pw[7];
  27. void solve(void){
  28. int x, y;
  29. const int a = 6;
  30. const int b = 6;
  31. int pr[7];
  32. int i;
  33. int j;
  34. int k;
  35. int ni;
  36. int nj;
  37. int nc;
  38. int m;
  39. int nm;
  40. int n1;
  41. int n2;
  42. fg = 1;
  43. pw[0] = 1;
  44. for(i=(1);i<(7);i++){
  45. pw[i] = 3 * pw[i-1];
  46. }
  47. for(y=(1);y<(6);y++){
  48. int x;
  49. for(i=(0);i<(a+1);i++){
  50. for(j=(0);j<(b+1);j++){
  51. for(k=(0);k<(pw[y]);k++){
  52. dp[i][j][k] = -1073709056;
  53. }
  54. }
  55. }
  56. dp[0][0][0] = 0;
  57. for(x=(1);x<(6);x++){
  58. for(m=(0);m<(y);m++){
  59. for(i=(0);i<(a+1);i++){
  60. for(j=(0);j<(b+1);j++){
  61. for(k=(0);k<(pw[y]);k++){
  62. nx[i][j][k] = -1073709056;
  63. }
  64. }
  65. }
  66. for(i=(0);i<(a+1);i++){
  67. for(j=(0);j<(b+1);j++){
  68. for(k=(0);k<(pw[y]);k++){
  69. if(dp[i][j][k] > -1073709056){
  70. int l;
  71. DigitF_L(k,y,pr,3);
  72. for(l=(0);l<(3);l++){
  73. if(l==1){
  74. ni = i +1;
  75. }
  76. else{
  77. ni = i +0;
  78. }
  79. if(l==2){
  80. nj = j +1;
  81. }
  82. else{
  83. nj = j +0;
  84. }
  85. if(ni > a || nj > b){
  86. continue;
  87. }
  88. nm = (k * 3) % pw[y] + l;
  89. nc = dp[i][j][k];
  90. n1 = n2 = 0;
  91. if(l){
  92. if(m && pr[0]==1){
  93. n1++;
  94. }
  95. if(m && pr[0]==2){
  96. n2++;
  97. }
  98. if(pr[y-1]==1){
  99. n1++;
  100. }
  101. if(pr[y-1]==2){
  102. n2++;
  103. }
  104. if(l==1){
  105. nc += n1 * (-30) + n2 * 20 + (n1 + n2) * (-30);
  106. }
  107. else{
  108. nc += n1 * (-30) + n2 * 20 + (n1 + n2) * (20);
  109. }
  110. }
  111. chmax(nx[ni][nj][nm], nc);
  112. }
  113. }
  114. }
  115. }
  116. }
  117. for(i=(0);i<(a+1);i++){
  118. for(j=(0);j<(b+1);j++){
  119. for(k=(0);k<(pw[y]);k++){
  120. dp[i][j][k] = nx[i][j][k];
  121. }
  122. }
  123. }
  124. }
  125. for(i=(0);i<(a+1);i++){
  126. for(j=(0);j<(b+1);j++){
  127. for(k=(0);k<(pw[y]);k++){
  128. chmax(answer[x][y][i][j], dp[i][j][k] + 120 * i + 40 * j);
  129. }
  130. }
  131. }
  132. }
  133. }
  134. for(x=(1);x<(6);x++){
  135. for(y=(1);y<(6);y++){
  136. for(i=(0);i<(a+1);i++){
  137. for(j=(0);j<(b+1);j++){
  138. if(i){
  139. chmax(answer[x][y][i][j], answer[x][y][i-1][j]);
  140. }
  141. if(j){
  142. chmax(answer[x][y][i][j], answer[x][y][i][j-1]);
  143. }
  144. }
  145. }
  146. }
  147. }
  148. }
  149. class Solution{
  150. public:
  151. int getMaxGridHappiness(int x, int y, int a, int b){
  152. if(!fg){
  153. solve();
  154. }
  155. return answer[x][y][a][b];
  156. }
  157. }
  158. ;
  159. // cLay varsion 20201115-2
  160.  
  161. // --- original code ---
  162. // #define main dummy_main
  163. // {}
  164. // #undef main
  165. //
  166. // int fg;
  167. // int answer[6][6][7][7];
  168. // int dp[7][7][243], nx[7][7][243], pw[7];
  169. //
  170. // void solve(void){
  171. // const int a = 6, b = 6;
  172. // int pr[7], i, j, k, ni, nj, nc, m, nm, n1, n2;
  173. //
  174. // fg = 1;
  175. // pw[0] = 1;
  176. // rep(i,1,7) pw[i] = 3 * pw[i-1];
  177. //
  178. // rep(y,1,6){
  179. // rep(i,a+1) rep(j,b+1) rep(k,pw[y]) dp[i][j][k] = -int_inf;
  180. // dp[0][0][0] = 0;
  181. // rep(x,1,6){
  182. // rep(m,y){
  183. // rep(i,a+1) rep(j,b+1) rep(k,pw[y]) nx[i][j][k] = -int_inf;
  184. // rep(i,a+1) rep(j,b+1) rep(k,pw[y]) if(dp[i][j][k] > -int_inf){
  185. // DigitF(k,y,pr,3);
  186. // rep(l,3){
  187. // ni = i + if[l==1, 1, 0];
  188. // nj = j + if[l==2, 1, 0];
  189. // if(ni > a || nj > b) continue;
  190. // nm = (k * 3) % pw[y] + l;
  191. // nc = dp[i][j][k];
  192. // n1 = n2 = 0;
  193. // if(l){
  194. // if(m && pr[0]==1) n1++;
  195. // if(m && pr[0]==2) n2++;
  196. // if(pr[y-1]==1) n1++;
  197. // if(pr[y-1]==2) n2++;
  198. // nc += n1 * (-30) + n2 * 20 + (n1 + n2) * (if[l==1, -30, 20]);
  199. // }
  200. // nx[ni][nj][nm] >?= nc;
  201. // }
  202. // }
  203. // rep(i,a+1) rep(j,b+1) rep(k,pw[y]) dp[i][j][k] = nx[i][j][k];
  204. // }
  205. // rep(i,a+1) rep(j,b+1) rep(k,pw[y]) answer[x][y][i][j] >?= dp[i][j][k] + 120 * i + 40 * j;
  206. // }
  207. // }
  208. //
  209. // rep(x,1,6) rep(y,1,6) rep(i,a+1) rep(j,b+1){
  210. // if(i) answer[x][y][i][j] >?= answer[x][y][i-1][j];
  211. // if(j) answer[x][y][i][j] >?= answer[x][y][i][j-1];
  212. // }
  213. // }
  214. //
  215. // class Solution {
  216. // public:
  217. // int getMaxGridHappiness(int x, int y, int a, int b) {
  218. // if(!fg) solve();
  219. // return answer[x][y][a][b];
  220. // }
  221. // };
  222.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty