Submission #1204067

#TimeUsernameProblemLanguageResultExecution timeMemory
1204067Muhammad_AneeqPark (JOI17_park)C++20
37 / 100
147 ms2840 KiB
#include "park.h" #include <vector> #include <map> #include <iostream> using namespace std; static int Place[1400]; int query(int u,int v) { Place[u]=Place[v]=1; if (u>v) swap(u,v); int z=Ask(u,v,Place); Place[u]=Place[v]=0; return z; } map<int,int>vis; int n; void rec(int u,int v) { if (vis[v]) return; if (query(u,v)) { vis[v]=1; if (u>v) swap(u,v); Answer(u,v);return; } vector<int>nodes; for (int i=0;i<n;i++) { if (i==u||i==v) continue; nodes.push_back(i); } int st=-1,en=n-3; while (st+1<en) { int mid=(st+en)/2; for (int i=0;i<=mid;i++) Place[nodes[i]]=1; if (query(u,v)) en=mid; else st=mid; for (int i=0;i<=mid;i++) Place[nodes[i]]=0; } rec(u,nodes[en]);rec(nodes[en],v); } void Detect(int T, int N) { n=N; if (N==2) { Answer(0,1);return; } for (int i=1;i<N;i++) rec(0,i); }
#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...