Submission #1367667

#TimeUsernameProblemLanguageResultExecution timeMemory
1367667sukritp5Game (APIO22_game)C++20
0 / 100
0 ms344 KiB
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
const int MXN=3e5+7;
int in[MXN],out[MXN],p[MXN];//least out large in. if in > out return 1

int root(int u){
  if(p[u]==u)return u;
  return p[u]=root(p[u]);
}

void unite(int u,int v){
  int ru=root(u),rv=root(v);
  if(ru==rv)return;
  out[ru]=min(out[ru],out[rv]);
  in[ru]=max(in[ru],in[rv]);
  p[rv]=ru;
}

void init(int n, int k) {
  for(int i=0;i<n;i++){
    in[i]=-1;out[i]=-1;
    p[i]=i;
  }
  out[0]=1;
  in[k-1]=k-2;
  for(int i=1;i<k-1;i++){
    in[i]=i-1;
    out[i]=i+1;
  }
}

int add_teleporter(int u, int v) {
  unite(u,v);
  int ru=root(u);
  if(in[ru]>=out[ru])return 1;
  return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...