Submission #538097

#TimeUsernameProblemLanguageResultExecution timeMemory
538097huangqrLibrary (JOI18_library)C++14
0 / 100
2 ms464 KiB
#include <cstdio> #include <vector> #include "library.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; void Solve(int N) { vector<int>M(N,1); vector<int>ans; vector<int>unknown; for(int i=1;i<=N;i++)unknown.push_back(i); for(int i=0;i<N;i++){//Locating an edge, letting it be L M[i]=0; if(Query(M)==1){ ans.push_back(i+1); unknown.erase(remove(unknown.begin(),unknown.end(),i+1),unknown.end()); break; } M[i]=1; } assert(0); while((int)ans.size()<N){ vector<int>space=unknown,a,b; while(space.size()>1){ int halfsize=space.size()/2; for(int i=0;i<halfsize;i++){ a.push_back(space[i]); } for(int i=halfsize;i<(int)space.size();i++){ b.push_back(space[i]); } assert(a.size()&&b.size()); fill(M.begin(),M.end(),0); for(auto x:a)M[x-1]=1; int pre = Query(M); M[ans.back()-1]=1; int aft = Query(M); if(pre==aft)space=a; else space=b; a.clear(); b.clear(); } ans.push_back(*(space.begin())); unknown.erase(remove(unknown.begin(),unknown.end(),*(space.begin())),unknown.end()); } Answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...