Submission #914387

#TimeUsernameProblemLanguageResultExecution timeMemory
914387amirhoseinfar1385Library (JOI18_library)C++17
100 / 100
192 ms1908 KiB
#include<bits/stdc++.h> #include "library.h" using namespace std; const int maxn=1000+10; int vis[maxn],n; vector<int>ers; int findsar(){ for(int i=0;i<n;i++){ ers.clear(); ers.resize(n,1); ers[i]=0; int r=Query(ers); if(r==1){ return i; } } return 0; } int findbad(vector<int>r,vector<int>s){ // cout<<"wtf: "<<(int)r.size()<<" "<<s.size()<<endl; if((int)s.size()==0){ return 0; } if((int)s.size()==1){ return s[0]; } int m=(int)s.size(); m>>=1; ers.clear(); ers.resize(n); for(auto x:r){ ers[x]=1; } for(int i=0;i<m;i++){ ers[s[i]]=1; } int resr=Query(ers); ers.clear(); ers.resize(n); for(int i=0;i<m;i++){ ers[s[i]]=1; } int resrr=Query(ers); if(resrr==resr){ vector<int>fake; for(int i=0;i<m;i++){ fake.push_back(s[i]); } return findbad(r,fake); } vector<int>fake; for(int i=m;i<(int)s.size();i++){ fake.push_back(s[i]); } return findbad(r,fake); } void Solve(int N) { n=N; if(n==1){ Answer({1}); return ; } int av=findsar(); vector<int>res={av}; vis[av]=1; //cout<<av<<endl; for(int i=0;i<N-1;i++){ vector<int>all; for(int j=0;j<n;j++){ if(vis[j]==0){ all.push_back(j); } } res.push_back(findbad(res,all)); vis[res.back()]=1; } for(int i=0;i<n;i++){ res[i]++; } Answer(res); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...