Submission #376443

#TimeUsernameProblemLanguageResultExecution timeMemory
376443peijar도서관 (JOI18_library)C++17
0 / 100
141 ms620 KiB
#include <bits/stdc++.h> #include "library.h" using namespace std; void Solve(int nbElem) { cerr << "HEY"<<endl; vector<int> ret(nbElem); if (nbElem == 1) { ret[1] = 1; Answer(ret); return ; } vector<int> tabRequete(nbElem,1); int extremGauche=-1; for (int i(0); i < nbElem; ++i) { tabRequete[i] = 0; int query = Query(tabRequete); tabRequete[i] = 1; if (query == 1) { extremGauche = i; break; } } fill(tabRequete.begin(), tabRequete.end(), 0); tabRequete[extremGauche] = 1; vector<int> restant; for (int i(0); i < nbElem; ++i) if (i != extremGauche) restant.push_back(i); ret[0] = extremGauche; for (int i(1); i < nbElem; ++i) { int deb(0), fin((int)restant.size()-1); for (auto v : restant) cerr << v + 1 << ' '; cerr << endl; while (deb < fin) { int mid = (deb + fin) / 2; tabRequete.assign(nbElem, 0); for (int iReq(deb); iReq <= mid; ++iReq) tabRequete[restant[iReq]] = 1; int retSans = Query(tabRequete); tabRequete[ret[i-1]] = 1; int retAvec = Query(tabRequete); if (retAvec == retSans) fin = mid; else deb = mid+1; } ret[i] = restant[deb]; restant.erase(lower_bound(restant.begin(), restant.end(), restant[deb])); } for (auto &v : ret) v++; for (auto v: ret) cerr << v << ' '; cerr << endl; Answer(ret); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...