fork download
  1. #include <iostream>
  2. #include <cstdio>
  3. using namespace std;
  4.  
  5. int main(){
  6. int x , y;
  7. cin >> x >> y;
  8. char grid[x][y];
  9. int ans[x][y];
  10. for(int loop = 0; loop < x; loop++){
  11. for(int lloop = 0; lloop < y; lloop++){
  12. cin >> grid[loop][lloop];
  13. if(grid[loop][lloop] == '.')
  14. ans[loop][lloop] = 0;
  15. else ans[loop][lloop] = 1;
  16. }
  17. }
  18.  
  19. for(int i = 1; i <= 100; i++){
  20.  
  21. int rr[2500],ss[2500],cnt=0;
  22. for(int loo = 0; loo < x; loo++){
  23. for(int coo = 0; coo < y; coo++){
  24. int tsum = 0;
  25. if(coo > 0) tsum += ans[loo][coo-1];
  26. if(coo < y-1) tsum += ans[loo][coo+1];
  27. if(loo > 0) tsum += ans[loo-1][coo];
  28. if(loo < x-1) tsum += ans[loo+1][coo];
  29. if(coo > 0 && loo > 0) tsum += ans[loo-1][coo-1];
  30. if(coo > 0 && loo < x-1) tsum += ans[loo+1][coo-1];
  31. if(coo < y-1 && loo > 0) tsum += ans[loo-1][coo+1];
  32. if(coo < y-1 && loo < x-1) tsum += ans[loo+1][coo+1];
  33.  
  34. if(tsum == 3 && ans[loo][coo] == 0){
  35. rr[cnt] = loo; ss[cnt++] = coo;
  36. //cout << rr[cnt -1] << " " << ss[cnt-1] << " " << tsum << endl;
  37. }
  38. if((tsum > 3 || tsum < 2)&& ans[loo][coo] == 1){
  39. rr[cnt] = loo; ss[cnt++] = coo;
  40. //cout << rr[cnt -1] << " " << ss[cnt-1] << " " << tsum << endl;
  41. }
  42. }
  43. }
  44.  
  45. //swap
  46. for(int poo = 0; poo < cnt; poo++){
  47. //cout<<rr[poo] << " " << ss[poo] << endl;
  48. if (ans[rr[poo]][ss[poo]] == 0)
  49. ans[rr[poo]][ss[poo]] = 1;
  50. else ans[rr[poo]][ss[poo]] = 0;
  51. }
  52.  
  53. if(i == 1 || i == 5 || i == 10 || i == 50 || i == 100){
  54. int sum = 0;
  55. for(int loo = 0; loo < x; loo++){
  56. for(int coo = 0; coo < y; coo++){
  57. sum += ans[loo][coo];
  58. //cout << ans[loo][coo];
  59. }
  60. //cout << endl;
  61. }
  62. cout << sum<<endl;
  63. }
  64.  
  65. }
  66. return 0;
  67. }
Success #stdin #stdout 0.01s 5272KB
stdin
10 10
..XX..XXXX
.X.XX.XX..
XX....X..X
X...XX..XX
X..X.X....
..........
.XXX.....X
.......XXX
......XX..
X.X.X.X...
stdout
38
30
27
0
0