Submission #762151

#TimeUsernameProblemLanguageResultExecution timeMemory
762151kymEaster Eggs (info1cup17_eastereggs)C++14
60 / 100
14 ms464 KiB
#include <bits/stdc++.h> #include "grader.h" using namespace std; void debug_out() {cerr<<endl;} template <typename Head, typename... Tail> void debug_out(Head _H, Tail... _T) {cerr<<" "<<to_string(_H);debug_out(_T...);} #define debug(...) cerr<<"["<<#__VA_ARGS__<<"]:",debug_out(__VA_ARGS__) const int MAXN = 515; const int inf=1234567890; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); vector<int> adj[MAXN]; int n; int pre[MAXN]; int cnt=1; int rev[MAXN]; void reset(){ for(int i=0;i<=n;i++)adj[i].clear(); cnt=1; memset(pre,0,sizeof pre); memset(rev,0,sizeof rev); } void dfs(int x, int p){ pre[x]=cnt; rev[cnt]=x; cnt++; for(auto v:adj[x])if(v!=p){ dfs(v,x); } } bool check(int l){ vector<int> vec; for(int i=1;i<=l;i++){ vec.push_back(rev[i]); } bool r=query(vec); return r; } int dd(int n){ int t=0; while(n>1){ n/=2; t++; } return t; } int findEgg (int N, vector < pair < int, int > > bridges) { n=N; if(n==1){ return 1; } for(auto x:bridges){ adj[x.first].push_back(x.second); adj[x.second].push_back(x.first); } dfs(1,-1); int logn=dd(n); debug(logn); int x=0; for(int i=logn-1;i>=0;i--){ if(check(x+(1<<i))){ } else{ x+=1<<i; } } ++x; int ans=rev[x]; reset(); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...