Submission #538088

#TimeUsernameProblemLanguageResultExecution timeMemory
538088huangqrLibrary (JOI18_library)C++14
0 / 100
49 ms336 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; unordered_set<int>unknown; for(int i=1;i<=N;i++)unknown.insert(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(i+1); break; } M[i]=1; } if(ans.empty())Answer(ans); while((int)ans.size()<N){ /*cout<<"ans: "; for(auto x:ans)cout<<x<<" "; cout<<"\n";*/ unordered_set<int>space=unknown,a,b; while(space.size()>1){ /*cout<<"space: "; for(auto x:space)cout<<x<<" "; cout<<"\n";*/ int halfsize=space.size()/2; auto it=space.begin(); for(int i=0;i<halfsize;i++){ a.insert(*it); it++; } for(int i=halfsize;i<(int)space.size();i++){ b.insert(*it); it++; } /*cout<<"a: "; for(auto x:a)cout<<x<<" "; cout<<"\n"; cout<<"b: "; for(auto x:b)cout<<x<<" "; cout<<"\n";*/ M=vector<int>(N,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(*(space.begin())); } Answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...