제출 #1367720

#제출 시각아이디문제언어결과실행 시간메모리
1367720sukritp5Game (APIO22_game)C++20
2 / 100
0 ms420 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 K;

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

bool done=0;

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) {
  K=k;
  for(int i=0;i<n;++i){
    p[i]=i;
    in[i]=-1;
    out[i]=INT_MAX;
  }
}

int add_teleporter(int u, int v) {
  if(done)return 1;
  int ru=root(u),rv=root(v);
  if(u<K&&v<K){
    if(v<=u){
      done=1;
      return 1;
    }
  }
  else if(v<K){
    out[ru]=min(out[ru],v);
    if(in[ru]>=out[ru]){
      done=1;
      return 1;
    }
  }
  else if(u<K){
    in[rv]=max(in[rv],u);
    if(in[rv]>=out[rv]){
      done=1;
      return 1;
    }
  }
  else{
    unite(v,u);
    if(in[rv]>=out[rv]){
      done=1;
      return 1;
    }
  }
  return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…