#include "game.h"
//#include "grader.cpp"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
namespace{
const int inf=1e9;
vector<int> mn,mx;
int k;
vector<vector<int>> adj,adjr;
}
void init(int n, int _k) {
k=_k;
mn=vector<int>(n,inf);
mx=vector<int>(n,-1);
adj.resize(n);
adjr.resize(n);
for(int i=0;i<k;i++){
mn[i]=mx[i]=i;
if(i>0){
adj[i-1].push_back(i);
adjr[i].push_back(i-1);
}
}
}
int add_teleporter(int a, int b) {
if(max(a,b)<k) return b<=a;
adj[a].push_back(b);
adjr[b].push_back(a);
{
int tmp=mn[b];
if(tmp<mn[a]){
mn[a]=tmp;
queue<int> q;
q.push(a);
while(!q.empty()){
int v=q.front();
q.pop();
for(auto u:adjr[v]){
if(mn[v]<mn[u]){
mn[u]=mn[v];
q.push(u);
}
}
}
}
}
{
int tmp=mx[a];
if(tmp>mx[b]){
mx[b]=tmp;
queue<int> q;
q.push(b);
while(!q.empty()){
int v=q.front();
q.pop();
for(auto u:adj[v]){
if(mx[v]>mx[u]){
mx[u]=mx[v];
q.push(u);
}
}
}
}
}
//assert(a<b);
return mn[b]<=mx[a];
}
# | 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... |