제출 #979996

#제출 시각아이디문제언어결과실행 시간메모리
979996avitaGame (APIO22_game)C++17
100 / 100
1261 ms64520 KiB
#include "game.h" #include<bits/stdc++.h> using namespace std; const int maxn=300005; int n, k, ok, l[maxn], r[maxn], layer[maxn]; vector <int> A[maxn], At[maxn]; void propagate(int u) { if (ok) return; if (r[u]<=l[u]) return ok=1, void(); int j=__lg(l[u]^r[u]); if (layer[u]>j) layer[u]=j; else return; for (int v:A[u]) l[v]=max(l[v], l[u]), propagate(v); for (int v:At[u]) r[v]=min(r[v], r[u]), propagate(v); } int add_teleporter(int u, int v) { A[u].push_back(v), At[v].push_back(u); l[v]=max(l[v], max(l[u], u<k?u:-1)), propagate(v); r[u]=min(r[u], min(r[v], v<k?v:k)), propagate(u); return ok; } void init(int N, int K) { n=N, k=K; for (int i=0; i<k; i++) l[i]=i, r[i]=i+1; for (int i=k; i<n; i++) l[i]=-1, r[i]=k; for (int i=0; i<n; i++) layer[i]=__lg(l[i]^r[i]); } /*int main() { }*/
#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...