fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. int n, k;
  6. scanf("%d%d", &n, &k);
  7. int alive[n][n];
  8. int count[n][n];
  9. int times[n][n];
  10.  
  11. for (int i=0; i<n; i++)
  12. for (int j=0; j<n; j++) {
  13. scanf("%d", &alive[i][j]);
  14. times[i][j] = 0;
  15. }
  16.  
  17. for (int i=0; i<k; i++) {
  18.  
  19. for (int j=0; j<n; j++)
  20. for (int l=0; l<n; l++)
  21. count[j][l] = 0;
  22.  
  23. for (int j=0; j<n; j++)
  24. for (int l=0; l<n; l++)
  25. if ( alive[j][l] == 1 ) {
  26. times[j][l]++;
  27. for (int x=j-1; x<=j+1; x++)
  28. for (int y=l-1; y<=l+1; y++)
  29. if ( x>=0 && x<n && y>=0 && y<n && !(x==j && y==l) )
  30. count[x][y]++;
  31. }
  32. /*
  33. for (int j=0; j<n; j++) {
  34. for (int l=0; l<n; l++)
  35. printf("%d ", count[j][l]);
  36. printf("\n");
  37. }
  38. printf("\n");
  39. */
  40. for (int j=0; j<n; j++)
  41. for (int l=0; l<n; l++)
  42. if ( alive[j][l] == 1 && ( count[j][l] < 2 || count[j][l] > 3 ) )
  43. alive[j][l] = 0;
  44. else if ( alive[j][l] == 0 && count[j][l] == 3 )
  45. alive[j][l] = 1;
  46. /*
  47. for (int j=0; j<n; j++) {
  48. for (int l=0; l<n; l++)
  49. printf("%d ", alive[j][l]);
  50. printf("\n");
  51. }
  52. printf("\n");
  53. */
  54. }
  55.  
  56. for (int i=0; i<n; i++) {
  57. for (int j=0; j<n; j++) {
  58. if ( alive[i][j] == 1 )
  59. times[i][j]++;
  60. printf("%d ", alive[i][j]);
  61. }
  62. printf("\n");
  63. }
  64.  
  65. int find = 0;
  66. for (int i=k+1; i>0; i--)
  67. for (int x=n-1; x>=0; x--)
  68. for (int y=n-1; y>=0; y--)
  69. if ( times[x][y] == i && find == 0) {
  70. printf("%d %d", x+1, y+1);
  71. find = 1;
  72. }
  73.  
  74. return 0;
  75. }
  76.  
Success #stdin #stdout 0s 5304KB
stdin
5 3
1 0 0 0 1
0 0 1 0 0
0 1 1 1 0
0 0 1 0 0
0 1 0 1 0
stdout
0 0 0 0 0 
0 0 0 0 0 
0 1 1 1 0 
0 0 0 0 0 
0 0 0 0 0 
3 4