Advertisement
STANAANDREY

AOCMMXX d17p2

Dec 17th, 2020
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using Point4d = pair<pair<int, int>, pair<int, int>>;
  4. #define makeP4D(i, j, k, l) make_pair(make_pair(i, j), make_pair(k, l))
  5. set<Point4d> s;
  6. int n;
  7.  
  8. void read() {
  9.     string line;
  10.     while (cin >> line) {
  11.         for (int i = 0; i < (int)line.size(); i++) {
  12.             if (line[i] == '#')
  13.                 s.insert(makeP4D(n, i, 0, 0));
  14.         }
  15.         ++n;
  16.     }
  17. }
  18.  
  19. int cnt(int i, int j, int k, int l) {
  20.     int nr = 0;
  21.     for (int ii = i - 1; ii <= i + 1; ii++)
  22.         for (int jj = j - 1; jj <= j + 1; jj++)
  23.             for (int kk = k - 1; kk <= k + 1; kk++)
  24.                 for (int ll = l - 1; ll <= l + 1; ll++) {
  25.                     if (i == ii && j == jj && k == kk && l == ll)
  26.                         continue;
  27.                     if (s.count(makeP4D(ii, jj, kk, ll)))
  28.                         nr++;
  29.                 }
  30.     return nr;
  31. }
  32.  
  33. int main()
  34. {
  35.     freopen("text.in", "r", stdin);
  36.     read();
  37.     int left = 0, right = n, cycle = 6;
  38.     while (cycle--) {
  39.         left--;
  40.         right++;
  41.         set<Point4d> aux;
  42.         for (int i = left; i <= right; i++)
  43.             for (int j = left; j <= right; j++)
  44.                 for (int k = left; k <= right; k++)
  45.                     for (int l = left; l <= right; l++) {
  46.                         int nr = cnt(i, j, k, l);
  47.                         if (s.count(makeP4D(i, j, k, l))) {
  48.                             if (nr == 2 || nr == 3)
  49.                                 aux.insert(makeP4D(i, j, k, l));
  50.                         } else {
  51.                             if (nr == 3)
  52.                                 aux.insert(makeP4D(i, j, k, l));
  53.                         }
  54.                     }
  55.         s = aux;
  56.     }
  57.     cout << s.size() << endl;
  58.     return 0;
  59. }
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement