Submission #810920

#TimeUsernameProblemLanguageResultExecution timeMemory
810920taherCell Automaton (JOI23_cell)C++17
16 / 100
8064 ms339972 KiB
#include <bits/stdc++.h>

using namespace std;

const int dx[4] = {0, 0, -1, 1};
const int dy[4] = {1, -1, 0, 0};

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  vector<array<int, 2>> a(n);

  set<array<int, 2>> black, gray;

  for (int i = 0; i < n; i++) {
    cin >> a[i][0] >> a[i][1];
    black.insert({a[i][0], a[i][1]});
  }

  auto Advance = [&]() {
    set<array<int, 2>> nblack;
    for (auto cell : black) {
      int x = cell[0];
      int y = cell[1];

      for (int it = 0; it < 4; it++) {
        int nx = x + dx[it];
        int ny = y + dy[it];
        if (!gray.count({nx, ny}) && !black.count({nx, ny})) {
          nblack.insert({nx, ny});
        }
      }
    }
    swap(gray, black);
    swap(black, nblack);
  };

  int current_t = 0;

  auto SimulateTo = [&](int t) {
    while (current_t < t) {
      Advance();
      current_t++;
    }

    return (int) black.size();
  };

  for (int i = 0; i < m; i++) {
    int timestamp;
    cin >> timestamp;

    cout << SimulateTo(timestamp) << '\n';
  }
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...