Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. const unsigned int nmax = 1000;
  4. unsigned int N, steps = 0;
  5. bool mat[nmax][nmax];
  6.  
  7. void read()
  8. {
  9.     unsigned int i, j;
  10.     freopen("filmat.in", "rt", stdin);
  11.     scanf("%d", &N);
  12.     for (i = 1; i <= N; i++) {
  13.         for (j = 1; j <= N; j++) {
  14.             scanf("%d", &mat[i][j]);
  15.         }
  16.     }
  17.     fclose(stdin);
  18. }
  19.  
  20. void write()
  21. {
  22.     freopen("fimat.out", "wt", stdout);
  23.     printf("%d", steps);
  24.     fclose(stdout);
  25. }
  26.  
  27. void process()
  28. {
  29.     unsigned int i, j, k, vecini;
  30.     bool status = true;
  31.     int dlin[] = {-1, -1, 0, 1, 1, 1, 0, -1};
  32.     int dcol[] = {0, 1, 1, 1, 0, -1, -1, -1};
  33.     while (status) {
  34.         status = false;
  35.         for (i = 1; i <= N; i++) {
  36.             for (j = 1; j <= N; j++) {
  37.                 if (!mat[i][j]) {
  38.                     vecini = 0;
  39.                     for (k = 0; k < 8; k++) {
  40.                         if (mat[i + dlin[k]][j + dcol[k]]) {
  41.                             vecini++;
  42.                             if (vecini >= 3) {
  43.                                 status = true;
  44.                                 mat[i][j] = 1;
  45.                                 steps++;
  46.                                 break;
  47.                             }
  48.                         }
  49.                     }
  50.                 }
  51.             }
  52.         }
  53.     }
  54. }
  55.  
  56. int main()
  57. {
  58.     read();
  59.     process();
  60.     write();
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement