제출 #1311766

#제출 시각아이디문제언어결과실행 시간메모리
1311766madamadam3Cell Automaton (JOI23_cell)C++20
16 / 100
8109 ms583360 KiB
#include <bits/stdc++.h> using namespace std; using pi = pair<int, int>; using vi = vector<int>; struct State { int t = 0; set<pi> black, gray; State() {}; State(vi &x, vi &y) { for (int i = 0; i < x.size(); i++) black.insert({x[i], y[i]}); } State(int T, set<pi> &B, set<pi> &G) { t = T; black = B; gray = G; } State next() { set<pi> ng = black, nb; for (auto el : black) { for (auto d : vector<pi>({{0, -1}, {0, 1}, {-1, 0}, {1, 0}})) { pi nx = {el.first + d.first, el.second + d.second}; if (!black.count(nx) && !gray.count(nx)) nb.insert(nx); } } return State(t+1, nb, ng); } void output(int M = -1) { if (M == -1) { for (auto el : black) M = max({M, abs(el.first), abs(el.second)}); for (auto el : gray) M = max({M, abs(el.first), abs(el.second)}); } for (int i = -M; i <= M; i++) { for (int j = -M; j <= M; j++) { if (black.count({i, j})) cout << 1; else if (gray.count({i, j})) cout << 2; else cout << 0; } cout << "\n"; } } }; int main() { cin.tie(0)->sync_with_stdio(0); int n, q; cin >> n >> q; vector<int> x(n), y(n); for (int i = 0; i < n; i++) cin >> x[i] >> y[i]; auto cur = State(x, y); while (q--) { int t; cin >> t; while (cur.t < t) cur = cur.next(); cout << cur.black.size() << "\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...