Submission #267045

#TimeUsernameProblemLanguageResultExecution timeMemory
267045Toirov_SadiLibrary (JOI18_library)C++17
100 / 100
389 ms504 KiB
#include<bits/stdc++.h> #include "library.h" using namespace std; void Solve(int n){ if(n == 1){ Answer(vector<int> (1, 1)); return; } vector<int> res; vector<int> q(n, 1); vector<int> t(n); iota(t.begin(), t.end(), 1); for(int i = 1; i <= n; i ++){ q[i - 1] = 0; if(Query(q) == 1){ res.push_back(i); t.erase(t.begin() + i - 1); q[i - 1] = 1; break; } q[i - 1] = 1; } q = vector<int>(n, 0); while((int)res.size() < n){ int l = 0, r = (int)t.size() - 1; while(l < r){ int m = (l + r) / 2; for(int i = l; i <= m; i ++) q[t[i] - 1] = 1; int res1 = Query(q); q[res.back() - 1] = 1; int res2 = Query(q); q[res.back() - 1] = 0; for(int i = l; i <= m; i ++) q[t[i] - 1] = 0; if(res1 == res2) r = m; else l = m + 1; } res.push_back(t[l]); t.erase(t.begin() + l); } Answer(res); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...