제출 #1161188

#제출 시각아이디문제언어결과실행 시간메모리
1161188PwoLibrary (JOI18_library)C++20
100 / 100
113 ms468 KiB
#include <bits/stdc++.h> #include "library.h" using namespace std; int n; vector<int> lf; int f(int j, int l, int r) { if (l == r) return lf[l]; int m = (l + r) / 2; vector<int> q(n, 0); for (int i = l; i <= m; i++) q[lf[i]] = 1; q[j] = 0; int r1; if (lf[l] == j && lf[m] == j) r1 = 0; else r1 = Query(q); q[j] = 1; int r2 = Query(q); if (r2 <= r1) return f(j, l, m); return f(j, m + 1, r); } void Solve(int N) { n = N; int st = -1; if (n == 1) { Answer(vector<int>{1}); return; } vector<int> q(n, 1); for (int i = 0; i < N; i++) { q[i] = 0; int res = Query(q); if (res == 1) { st = i; break; } q[i] = 1; } for (int i = 0; i < N; i++) lf.push_back(i); lf.erase(remove(lf.begin(), lf.end(), st), lf.end()); vector<int> ans{st + 1}; for (int i = 1; i < N; i++) { st = f(st, 0, lf.size() - 1); ans.push_back(st + 1); lf.erase(remove(lf.begin(), lf.end(), st), lf.end()); } Answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...