Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int m[4][4];
  5. int um[4][4];
  6. int t[3][3];
  7. int k[16];
  8. int n = -1;
  9.  
  10. int apply(int r, int c) {
  11.     for (int i = -1; i < 2; i++) {
  12.         for (int j = -1; j < 2; j++) {
  13.             if (t[i + 1][j + 1] == 1 && r + i >= 0 && r + i < 4 && c + j >= 0 && c + j < 4) {
  14.                 um[r + i][c + j] = 1 - um[r + i][c + j];
  15.             }
  16.         }
  17.     }
  18. }
  19.  
  20. void check() {
  21.     for (int i = 0; i < 4; i++) {
  22.         for (int j = 0; j < 4; j++) {
  23.             um[i][j] = m[i][j];
  24.         }
  25.     }
  26.     int c = 0;
  27.     for (int i = 0; i < 16; i++) {
  28.         if (k[i]) {
  29.             apply(i/4, i%4);
  30.             c++;
  31.         }
  32.     }
  33.     for (int i = 0; i < 4; i++) {
  34.         for (int j = 0; j < 4; j++) {
  35.             if (um[i][j] != um[0][0]) {
  36.                 c = -1;
  37.             }
  38.         }
  39.     }
  40.     if (n == -1) {
  41.         n = c;
  42.     } else if (c > -1) {
  43.         n = min(n, c);
  44.     }
  45. }
  46.  
  47. void f(int l) {
  48.     if (l > 15) {
  49.         check();
  50.     } else {
  51.         k[l] = 1;
  52.         f(l + 1);
  53.         k[l] = 0;
  54.         f(l + 1);
  55.     }
  56. }
  57.  
  58. int main() {
  59.     for (int i = 0; i < 4; i++) {
  60.         for (int j = 0; j < 4; j++) {
  61.             char c;
  62.             cin >> c;
  63.             if (c == 'B') {
  64.                 m[i][j] = 0;
  65.             } else {
  66.                 m[i][j] = 1;
  67.             }
  68.         }
  69.     }
  70.     for (int i = 0; i < 3; i++) {
  71.         for (int j = 0; j < 3; j++) {
  72.             char v;
  73.             cin >> v;
  74.             t[i][j] = v - '0';
  75.         }
  76.     }
  77.     f(0);
  78.     if (n == -1) {
  79.         cout << "Impossible";
  80.     } else {
  81.         cout << n;
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement