This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
int l[N], r[N], K;
vector <int> in[N], out[N];
void init(int n, int k){
K = k;
for (int i = 0; i <= k; ++ i) l[i] = i, r[i] = i + 1;
for (int i = k + 1; i <= n; ++ i) l[i] = 0, r[i] = k + 1;
for (int i = 0; i <= n; ++ i) in[i] = {}, out[i] = {};
}
int calc(int u, int v){
if (r[u] <= l[v]) return 0;
if (l[u] >= r[v]) return 1;
if (l[u] == l[v] && r[u] == r[v]) return 0;
if (r[v] <= (l[u] + r[u]) / 2){
r[u] = l[u] + r[u] / 2;
for (int i : in[u]) if (calc(u, i)) return 1;
for (int i : out[u]) if (calc(i, u)) return 1;
}
else if (l[u] >= (l[v] + r[v]) / 2){
l[v] = l[v] + r[v] / 2;
for (int i : in[v]) if (calc(v, i)) return 1;
for (int i : out[v]) if (calc(i, v)) return 1;
}
return 0;
}
int add_teleporter(int u, int v){
++ u;
if (v >= K) ++ v;
in[u].push_back(v);
out[v].push_back(u);
return calc(u, v);
}
# | 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... |