제출 #1208662

#제출 시각아이디문제언어결과실행 시간메모리
1208662k1r1t0게임 (APIO22_game)C++20
12 / 100
7 ms14988 KiB
#include <bits/stdc++.h> using namespace std; const int N = 310000; int l[N], r[N], kk; vector<int> out[N], in[N]; void init(int n, int k) { kk = k; for (int i = 0; i <= k; i++) l[i] = r[i] = i; for (int i = k + 1; i <= n; i++) l[i] = 0, r[i] = k; } bool upd_edge(int u, int v); bool upd_vert(int v) { for (int u : in[v]) if (upd_edge(u, v)) return true; for (int u : out[v]) if (upd_edge(v, u)) return true; return false; } bool upd_edge(int u, int v) { if (r[u] < l[v]) return false; if (r[v] < l[u]) return true; int mu = (l[u] + r[u]) / 2; int mv = (l[v] + r[v]) / 2; if (r[v] < r[u] && r[v] <= mu) { r[u] = mu; return upd_vert(u); } if (l[u] > mv) { l[v] = mv + 1; return upd_vert(v); } return false; } int add_teleporter(int u, int v) { u++; v++; if (v <= kk) v--; in[v].push_back(u); out[u].push_back(v); return upd_edge(u, v); }
#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...