Submission #1198931

#TimeUsernameProblemLanguageResultExecution timeMemory
1198931rxlfd314Mars (APIO22_mars)C++20
0 / 100
0 ms3192 KiB
#include "mars.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using ari2 = array<int, 2>; using ari3 = array<int, 3>; using arl2 = array<ll, 2>; using arl3 = array<ll, 3>; template <class T> using vt = vector<T>; #define all(x) begin(x), end(x) #define size(x) (int((x).size())) #define REP(a,b,c,d) for(int a=(b);(d)>0?a<=(c):a>=(c);a+=(d)) #define FOR(a,b,c) REP(a,b,c,1) #define ROF(a,b,c) REP(a,b,c,-1) struct DSU { int N; vt<int> uf; DSU(const int n) : N(n), uf(n*n, -1) {} int hsh(const int i, const int j) { return i * N + j; } int find(const int i, const int j) { return uf[hsh(i, j)] < 0 ? hsh(i, j) : uf[hsh(i, j)] = find(uf[hsh(i, j)] / N, uf[hsh(i, j)] % N); } bool unite(const int a, const int b, const int c, const int d) { int i = find(a, b), j = find(c, d); if (i == j) return false; if (uf[i] > uf[j]) swap(i, j); uf[i] += uf[j]; uf[j] = i; return true; } }; string process(vt<vt<string>> a, int i, int j, int k, int n) { string ret(100, '0'); n = 2 * n + 1; FOR(x, 0, 2) FOR(y, 0, 2) { FOR(z, 0, 99) { const int c = (x + z / n) * n + y + z % n; if (c < 100) ret[c] = a[x][y][z]; } } if (k == n/2-1) { DSU uf(n); int cnt = 0; FOR(x, 0, n-1) FOR(y, 0, n-1) cnt += ret[x*n+y] == '1'; FOR(x, 0, n-1) FOR(y, 0, n-1) if (ret[x*n+y] == '1') { if (x && ret[(x-1)*n+y] == '1') cnt -= uf.unite(x-1, y, x, y); if (y && ret[x*n+(y-1)] == '1') cnt -= uf.unite(x, y-1, x, y); } ret = string(100, '0'); FOR(x, 0, 17) ret[x] = (cnt >> x & 1) + '0'; } return ret; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...