#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 11;
int n, k, ok;
int was[MAXN], r[MAXN], l[MAXN];
vector < int > g[MAXN], rg[MAXN];
void init(int _n, int _k) {
n = _n + 1, k = _k + 1;
for(int i = 0; i < k; i++) l[i] = i, r[i] = i + 1;
for(int i = k; i < n; i++) l[i] = 0, r[i] = k;
}
bool c(int a);
bool f(int a, int b){
if(r[a] <= l[b]) return 0;
if(l[a] >= r[b]) return 1;
if(l[a] == l[b] && r[a] == r[b]) return 0;
if((l[a] + r[a]) / 2 >= r[b]){
r[a] = (l[a] + r[a]) / 2;
return c(a);
}
else if(l[a] >= (l[b] + r[b]) / 2){
l[b] = (l[b] + r[b]) / 2;
return c(b);
}
return 0;
}
bool c(int a){
for(int b : rg[a])
if(f(b, a))
return 1;
for(int b : g[a]){
if(f(a, b))
return 1;
}
return 0;
}
int add_teleporter(int u, int v){
u++, v++;
if(v < k) v--;
g[u].push_back(v), rg[v].push_back(u);
if(f(u, v)) return 1;
else return 0;
}
# | 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... |