fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. struct dimcomp3{
  5. int B;
  6. int C;
  7. dimcomp3(){
  8. }
  9. ;
  10. dimcomp3(int b, int c){
  11. B = b;
  12. C = c;
  13. }
  14. dimcomp3(int a, int b, int c){
  15. B = b;
  16. C = c;
  17. }
  18. inline void set(int b, int c){
  19. B = b;
  20. C = c;
  21. }
  22. inline void set(int a, int b, int c){
  23. B = b;
  24. C = c;
  25. }
  26. inline int mask(int a, int b, int c){
  27. return (a * B + b) * C + c;
  28. }
  29. inline int operator()(int a, int b, int c){
  30. return (a * B + b) * C + c;
  31. }
  32. inline void para(int mask, int &a, int &b, int &c){
  33. a = mask / (B*C);
  34. b = mask % (B*C) / C;
  35. c = mask % C;
  36. }
  37. inline void operator()(int mask, int &a, int &b, int &c){
  38. a = mask / (B*C);
  39. b = mask % (B*C) / C;
  40. c = mask % C;
  41. }
  42. }
  43. ;
  44. #define main dummy_main
  45. int main(){
  46. return 0;
  47. }
  48. #undef main
  49. int N;
  50. int q[20000];
  51. int qs;
  52. int qe;
  53. int d[2][100][100];
  54. int ok[2][100][100];
  55. class Solution{
  56. public:
  57. int minimumMoves(vector<vector<int>>& mp){
  58. int i;
  59. int j;
  60. int k;
  61. int mask;
  62. int ni;
  63. int nj;
  64. int nk;
  65. int r;
  66. dimcomp3 c;
  67. N = mp.size();
  68. c.set(2,N,N);
  69. for(k=(0);k<(2);k++){
  70. for(i=(0);i<(N);i++){
  71. for(j=(0);j<(N);j++){
  72. d[k][i][j] = -1;
  73. }
  74. }
  75. }
  76. d[0][0][0] = 0;
  77. qs = qe = 0;
  78. q[qe++] = 0;
  79. for(i=(0);i<(N);i++){
  80. for(j=(0);j<(N);j++){
  81. ok[0][i][j] = ok[1][i][j] = 0;
  82. }
  83. }
  84. for(i=(0);i<(N);i++){
  85. for(j=(0);j<(N-1);j++){
  86. if(mp[i][j]==mp[i][j+1] && mp[i][j+1]==0){
  87. ok[0][i][j] = 1;
  88. }
  89. }
  90. }
  91. for(i=(0);i<(N-1);i++){
  92. for(j=(0);j<(N);j++){
  93. if(mp[i][j]==mp[i+1][j] && mp[i+1][j]==0){
  94. ok[1][i][j] = 1;
  95. }
  96. }
  97. }
  98. while(qs < qe){
  99. mask = q[qs++];
  100. c(mask,k,i,j);
  101. for(r=(0);r<(3);r++){
  102. if(r==0){
  103. nk =k^1;
  104. }
  105. else{
  106. nk =k;
  107. }
  108. if(r==1){
  109. ni =i+1;
  110. }
  111. else{
  112. ni =i;
  113. }
  114. if(r==2){
  115. nj =j+1;
  116. }
  117. else{
  118. nj =j;
  119. }
  120. if(ni >= N || nj >= N){
  121. continue;
  122. }
  123. if(ok[nk][ni][nj] && d[nk][ni][nj]==-1){
  124. if(r==0 && mp[ni+1][nj+1]==1){
  125. continue;
  126. }
  127. d[nk][ni][nj] = d[k][i][j] + 1;
  128. q[qe++] = c(nk,ni,nj);
  129. }
  130. }
  131. }
  132. return d[0][N-1][N-2];
  133. }
  134. }
  135. ;
  136. // cLay varsion 20191006-1
  137.  
  138. // --- original code ---
  139. // #define main dummy_main
  140. // {}
  141. // #undef main
  142. //
  143. // int N;
  144. // int q[20000], qs, qe;
  145. // int d[2][100][100];
  146. // int ok[2][100][100];
  147. //
  148. // class Solution {
  149. // public:
  150. // int minimumMoves(vector<vector<int>>& mp) {
  151. // int i, j, k, mask, ni, nj, nk, r;
  152. // dimcomp3 c;
  153. // N = mp.size();
  154. // c.set(2,N,N);
  155. //
  156. // rep(k,2) rep(i,N) rep(j,N) d[k][i][j] = -1;
  157. // d[0][0][0] = 0;
  158. // qs = qe = 0;
  159. // q[qe++] = 0;
  160. //
  161. // rep(i,N) rep(j,N) ok[0][i][j] = ok[1][i][j] = 0;
  162. // rep(i,N) rep(j,N-1) if(mp[i][j]==mp[i][j+1]==0) ok[0][i][j] = 1;
  163. // rep(i,N-1) rep(j,N) if(mp[i][j]==mp[i+1][j]==0) ok[1][i][j] = 1;
  164. //
  165. // while(qs < qe){
  166. // mask = q[qs++];
  167. // c(mask,k,i,j);
  168. //
  169. // rep(r,3){
  170. // nk = if[r==0, k^1, k];
  171. // ni = if[r==1, i+1, i];
  172. // nj = if[r==2, j+1, j];
  173. // if(ni >= N || nj >= N) continue;
  174. // if(ok[nk][ni][nj] && d[nk][ni][nj]==-1){
  175. // if(r==0 && mp[ni+1][nj+1]==1) continue;
  176. // d[nk][ni][nj] = d[k][i][j] + 1;
  177. // q[qe++] = c(nk,ni,nj);
  178. // }
  179. // }
  180. // }
  181. //
  182. // return d[0][N-1][N-2];
  183. // }
  184. // };
  185.  
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