Submission #1160987

#TimeUsernameProblemLanguageResultExecution timeMemory
1160987AvianshGame (APIO22_game)C++20
60 / 100
4097 ms42680 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; const int maxn = 3e5+12; vector<int>g[maxn]; vector<int>rg[maxn]; //maximum special that can get to here: int s[maxn]; //minimum special that it can go to: int e[maxn]; int myk; int myn; void init(int n, int k) { myk=k; myn=n; fill(s,s+n,-1); fill(e,e+n,1e9); for(int i = 0;i<k-1;i++){ g[i].push_back(i+1); rg[i+1].push_back(i); s[i]=i; e[i]=i; } s[k-1]=k-1; } bool ans = 0; //this will do maximising void dfs1(int st,int val){ if(s[st]>=val){ return; } s[st]=val; if(e[st]<=s[st]&&st>=myk){ ans=1; } for(int i : g[st]){ if(s[i]>=val){ continue; } dfs1(i,val); } } //this will do minimising void dfs2(int st,int val){ if(e[st]<=val){ return; } e[st]=val; if(e[st]<=s[st]&&st>=myk){ ans=1; } for(int i : rg[st]){ if(e[i]<=val){ continue; } dfs2(i,val); } } int add_teleporter(int u, int v) { g[u].push_back(v); rg[v].push_back(u); if(max(u,v)<myk){ if(v<=u){ ans=1; } } if(ans){ return 1; } dfs1(v,s[u]); dfs2(u,e[v]); if(ans){ return 1; } else{ 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...