#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++){
if(i>0){
mx[i]=i-1;
}
if(i<k-1){
mn[i]=i+1;
}
}
}
int add_teleporter(int a, int b) {
adj[a].push_back(b);
adjr[b].push_back(a);
{
int tmp=mn[b];
if(b<k) tmp=min(tmp,b);
if(tmp<mn[a]){
mn[a]=tmp;
queue<int> q;
q.push(a);
while(!q.empty()){
int v=q.front();
q.pop();
if(mn[v]<=mx[v]) return 1;
for(auto u:adjr[v]){
if(mn[v]<mn[u]){
mn[u]=mn[v];
q.push(u);
}
}
}
}
}
{
int tmp=mx[a];
if(a<k) tmp=max(tmp,a);
if(tmp>mx[b]){
mx[b]=tmp;
queue<int> q;
q.push(b);
while(!q.empty()){
int v=q.front();
q.pop();
if(mn[v]<=mx[v]) return 1;
for(auto u:adj[v]){
if(mx[v]>mx[u]){
mx[u]=mx[v];
q.push(u);
}
}
}
}
}
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... |