This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// hola soy Dember :D
// 31/03/2024
#include <bits/stdc++.h>
#define ll long long
#define pll pair<ll,ll>
#define F first
#define S second
#define Z size()
#define pb push_back
#define bp pop_back
#define fo(x,y,z) for(ll x=y; x<=z; x++)
#define of(x,y,z) for(ll x=y; x>=z; x--)
#define all(n) n.begin(), n.end()
#define arr(x,y,z) x+y, x+y+z
#define dd double
using namespace std;
const ll MN=300005;
ll n, k, xd, l[MN], r[MN], sevennationarmy[MN];
vector<ll> x[MN], y[MN];
void dfs(ll u){
if(xd)return;
if(r[u]<=l[u]){xd=1; return;}
if (sevennationarmy[u]>__lg(l[u]^r[u]))sevennationarmy[u]=__lg(l[u]^r[u]);
else return;
for(ll v:x[u])l[v]=max(l[v], l[u]), dfs(v);
for(ll v:y[u])r[v]=min(r[v], r[u]), dfs(v);
}
void init(int N, int K){
n=N, k=K;
fo(i,0,k-1)l[i]=i, r[i]=i+1;
fo(i,k,n-1)l[i]=-1, r[i]=k;
fo(i,0,n-1)sevennationarmy[i]=__lg(l[i]^r[i]);
return;
}
int add_teleporter(int u, int v){
x[u].pb(v), y[v].pb(u);
l[v]=max(l[v], max(l[u], ((u<k)?u:-1)+0ll)), dfs(v);
r[u]=min(r[u], min(r[v], ((v<k)?v:k) +0ll)), dfs(u);
return xd;
}
# | 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... |