#include "game.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5+12;
vector<int>g[maxn];
vector<int>rg[maxn];
//maximum special that can get to here:
int s[maxn];
//minimum special that it can go to:
int e[maxn];
int myk;
int myn;
void init(int n, int k) {
myk=k;
myn=n;
fill(s,s+n,-1);
fill(e,e+n,1e9);
for(int i = 0;i<k-1;i++){
g[i].push_back(i+1);
rg[i+1].push_back(i);
s[i]=i;
e[i]=i+1;
}
s[k-1]=k-1;
}
int ans = 0;
//this will do maximising
void dfs1(int st,int val){
if(s[st]>=val){
return;
}
s[st]=val;
if(e[st]<=s[st]){
ans=1;
}
for(int i : g[st]){
if(s[i]>=val){
continue;
}
dfs1(i,val);
}
}
//this will do minimising
void dfs2(int st,int val){
if(e[st]<=val){
return;
}
e[st]=val;
if(e[st]<=s[st]){
ans=1;
}
for(int i : rg[st]){
if(e[i]<=val){
continue;
}
dfs2(i,val);
}
}
int add_teleporter(int u, int v) {
if(max(u,v)<myk){
if(v<=u){
ans=1;
}
}
g[u].push_back(v);
rg[v].push_back(u);
dfs1(v,s[u]);
dfs2(u,e[v]);
if(ans>0){
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... |