This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |