Submission #950388

#TimeUsernameProblemLanguageResultExecution timeMemory
950388arbuzickCell Automaton (JOI23_cell)C++17
16 / 100
8042 ms2097152 KiB
#include <bits/stdc++.h>

using namespace std;

void solve() {
    int n, q;
    cin >> n >> q;
    vector<pair<int, int>> xy(n);
    for (int i = 0; i < n; ++i) {
        cin >> xy[i].first >> xy[i].second;
    }
    vector<int> t(q);
    for (int i = 0; i < q; ++i) {
        cin >> t[i];
    }
    vector<int> ans(t[q - 1] + 1);
    ans[0] = xy.size();
    set<pair<int, int>> black, gray;
    for (int i = 0; i < n; ++i) {
        black.insert(xy[i]);
    }
    for (int i = 1; i <= t[q - 1]; ++i) {
        set<pair<int, int>> black_nw;
        for (auto [x, y] : black) {
            if (!black.count({x + 1, y}) && !gray.count({x + 1, y})) {
                black_nw.emplace(x + 1, y);
            }
            if (!black.count({x - 1, y}) && !gray.count({x - 1, y})) {
                black_nw.emplace(x - 1, y);
            }
            if (!black.count({x, y + 1}) && !gray.count({x, y + 1})) {
                black_nw.emplace(x, y + 1);
            }
            if (!black.count({x, y - 1}) && !gray.count({x, y - 1})) {
                black_nw.emplace(x, y - 1);
            }
        }
        gray = black;
        black = black_nw;
        ans[i] = black.size();
    }
    for (int i = 0; i < q; ++i) {
        cout << ans[t[i]] << '\n';
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }
    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...