Submission #559942

#TimeUsernameProblemLanguageResultExecution timeMemory
559942nghiass001Fountain Parks (IOI21_parks)C++17
100 / 100
381 ms37316 KiB
#include "parks.h" #include <bits/stdc++.h> #define FOR(i,l,r) for(int i=(l); i<=(r); ++i) #define REP(i,l,r) for(int i=(l); i<(r); ++i) #define FORD(i,r,l) for(int i=(r); i>=(l); --i) #define REPD(i,r,l) for(int i=(r)-1; i>=(l); --i) using namespace std; const int N = 2e5 + 5; int component, a[N], dsu[N]; map<int, int> M[N]; vector<int> px, py; vector<int> edgex, edgey, pointx, pointy; int getD(int u) { return dsu[u] < 0 ? u : dsu[u] = getD(dsu[u]); } void add(int u, int v, int chair_x, int chair_y) { int pu = getD(u); int pv = getD(v); if (pu == pv) return; edgex.push_back(u); edgey.push_back(v); pointx.push_back(chair_x); pointy.push_back(chair_y); if (dsu[pu] > dsu[pv]) swap(pu, pv); dsu[pu] += dsu[pv]; dsu[pv] = pu; --component; } int construct_roads(vector<int> xxx, vector<int> yyy) { px = xxx; py = yyy; int n = component = px.size(); REP(i, 0, n) dsu[i] = -1; REP(i, 0, n) M[px[i]][py[i]] = i; REP(i, 0, n) if ((px[i] + py[i]) & 2) { if (M[px[i]].count(py[i] + 2)) add(i, M[px[i]][py[i] + 2], px[i] - 1, py[i] + 1); if (M[px[i] + 2].count(py[i])) add(i, M[px[i] + 2][py[i]], px[i] + 1, py[i] + 1); } REP(i, 0, n) if (!((px[i] + py[i]) & 2)) { if (M[px[i]].count(py[i] + 2)) { if (!(M[px[i] + 2].count(py[i]) && M[px[i] + 2].count(py[i] + 2))) add(i, M[px[i]][py[i] + 2], px[i] + 1, py[i] + 1); } if (M[px[i] + 2].count(py[i])) { if (!(M[px[i]].count(py[i] - 2) && M[px[i] + 2].count(py[i] - 2))) add(i, M[px[i] + 2][py[i]], px[i] + 1, py[i] - 1); } } if (component != 1) return 0; build(edgex, edgey, pointx, pointy); return 1; }
#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...