Advertisement
tuki2501

Dò Mìn

Feb 13th, 2020
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ii pair<int,int>
  3. #define fi first
  4. #define sc second
  5. using namespace std;
  6.  
  7. int n, m;
  8. int a[55][55], b[55][55];
  9. vector<ii> l = {
  10.     {-1, -1}, {-1, 0}, {-1, 1},
  11.     { 0, -1},          { 0, 1},
  12.     { 1, -1}, { 1, 0}, { 1, 1},
  13. };
  14.  
  15. void print() {
  16.     for (int i = 1; i <= n; i++)
  17.     for (int j = 1; j <= m; j++)
  18.         cout << b[i][j] << " \n"[j == m];
  19. }
  20.  
  21. signed main() {
  22. #ifdef _DEBUG
  23.     freopen("_in" , "r", stdin );
  24.     //freopen("_out", "w", stdout);
  25. #endif
  26.     ios::sync_with_stdio(0); cin.tie(0);
  27.     cin >> n >> m;
  28.     for (int i = 1; i <= n; i++)
  29.     for (int j = 1; j <= m; j++)
  30.         cin >> a[i][j];
  31.     memset(b, 0xff, sizeof(b));
  32.     for (int i = 0; i <= n + 1; i++) b[i][0] = b[i][m + 1] = 0;
  33.     for (int i = 0; i <= m + 1; i++) b[0][i] = b[n + 1][i] = 0;
  34.     int T = 8;
  35.     while(T--)
  36.     for (int i = 1; i <= n; i++)
  37.     for (int j = 1; j <= m; j++) {
  38.         if (a[i][j] == 0) for (auto d : l) b[i + d.fi][j + d.sc] = 0;
  39.         else {
  40.             int no = 0, po = 0;
  41.             for (auto d : l) {
  42.                 if (b[i + d.fi][j + d.sc] == -1) no++;
  43.                 if (b[i + d.fi][j + d.sc] ==  1) po++;
  44.             }
  45.             if (po + no == a[i][j]) for (auto d : l)
  46.                 if (b[i + d.fi][j + d.sc] == -1) b[i + d.fi][j + d.sc]  =  1;
  47.             if (po == a[i][j]) for (auto d : l)
  48.                 if (b[i + d.fi][j + d.sc] == -1) b[i + d.fi][j + d.sc]  =  0;
  49.         }
  50.     }
  51.     print();
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement