# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1007179 | BuzzyBeez | Joker (BOI20_joker) | C++17 | 202 ms | 26308 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
pair<int, int> E[200008];
int best[200008];
struct Disjoint_Set_Union {
static const int N = 2e5;
int par[N + 8], dis[N + 8], sz[N + 8];
vector<pair<int*, int>> history; int is_bi = 1;
Disjoint_Set_Union() {
iota(par, par + N + 8, 0);
fill(dis, dis + N + 8, 0);
fill(sz, sz + N + 8, 1);
}
pair<int, int> pu, pv; int du, dv;
pair<int, int> find(int u) {
du = 0;
while (par[u] != u) du ^= dis[u], u = par[u];
return {u, du};
}
void join(int u, int v) {
pu = find(u); pv = find(v);
u = pu.first; du = pu.second; v = pv.first; dv = pv.second;
if (u == v) {
if (du == dv) history.push_back({&is_bi, is_bi}), is_bi = 0;
return;
Compilation message (stderr)
# | 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... |