제출 #731061

#제출 시각아이디문제언어결과실행 시간메모리
731061grossly_overconfident게임 (APIO22_game)C++17
2 / 100
1 ms256 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; vector<int> la, sd; int n, k; int par(vector<int>& p, int i){ if (i == p[i]){ return i; } return par(p, p[i]); } int solvesmaller(int a, int b){ if (a >= k && b >= k){ return a; } if (b >= k){ return a; } if (a >= k){ return b; } return min(a, b); } int solvelarger(int a, int b){ if (a >= k && b >= k){ return b; } if (b >= k){ return a; } if (a >= k){ return b; } return max(a, b); } void init(int N, int K) { n = N; k = K; la.resize(n); sd.resize(n); iota(la.begin(), la.end(), 0); iota(sd.begin(), sd.end(), 0); } int add_teleporter(int u, int v) { if (u < k && v < k){ if (u >= v){ return 1; } } sd[par(sd, u)] = solvesmaller(par(sd, v), par(sd, u)); la[par(la, v)] = solvelarger(par(la, v), par(la, u)); /* for (int i : sd){ cout << i << " "; } cout << endl; for (int i : la){ cout << i << " "; } cout << endl; */ if (par(sd, u) <= par(la, u) && par(sd, u) < k && par(la, u) < k && u >= k){ return 1; } if (par(sd, v) <= par(la, v) && par(sd, v) < k && par(la, v) < k && v >= k){ return 1; } return 0; } int nothing() { int n, k; cin >> n >> k; init(n, k); int m = 0; while (m != 1){ int a, b; cin >> a >> b; m = add_teleporter(a, b); cout << m << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...