Submission #741914

#TimeUsernameProblemLanguageResultExecution timeMemory
741914vjudge1Game (APIO22_game)C++17
100 / 100
1627 ms55888 KiB
#include "game.h" #include<bits/stdc++.h> using namespace std; int N,K,l[300100],r[300100]; #define F(i,j,K) for(int i = j; i <= K; i++) #define FR(i,j) for(auto i: j) vector<int> adj[300100],radj[300100]; void init(int N, int k) { K = k; F(i,0,K) l[i]=i,r[i]=i+1; F(i,K+1,N) l[i]=0,r[i]=K+1; F(i,0,N) adj[i].clear(),radj[i].clear(); } bool calc(int u,int v){ if (r[u]<=l[v]) return 0; if (l[u]>=r[v]) return 1; if (l[u]==l[v]&&r[u]==r[v]) return 0; if (r[v]<=(l[u]+r[u])/2){ r[u]=(l[u]+r[u])/2; FR(i,radj[u]) if (calc(i,u)) return 1; FR(i,adj[u]) if(calc(u,i)) return 1; } else if (l[u]>=(l[v]+r[v])/2){ l[v]=(l[v]+r[v])/2; FR(i,adj[v]) if (calc(v,i)) return 1; FR(i,radj[v]) if (calc(i,v)) return 1; } return 0; } int add_teleporter(int u, int v) { u++; if (v>=K) v++; adj[u].push_back(v); radj[v].push_back(u); return calc(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...