# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1017988 | 2024-07-09T12:22:21 Z | davit_tsibadze | 도서관 (JOI18_library) | C++17 | 15 ms | 344 KB |
#include <library.h> #include <bits/stdc++.h> using namespace std; #define ff first #define sc second #define pb push_back #define ll long long #define pll pair<ll, ll> #define pii pair<int, int> const ll inf = 1e18; // #define int long long vector <int> ans, m, a; bool isgood(int mid){ for (int i = 0; i < m.size(); i++) m[i] = 0; for (int i = 0; i <= mid; i++) m[a[i] - 1] = 1; int x = Query(m); m[ans.back() - 1] = 1; int y = Query(m); return (x == y); } void Solve(int N){ int d; while(m.size() < N)m.pb(1); for (int i = 1; i <= N; i++){ m[i - 1] = 0; if (Query(m) == 1){d = i; break;} m[i] = 1; } ans.pb(d); for (int i = 1; i <= N; i++) if (i != d)a.pb(i); while(a.size()){ int l = 0, r = a.size() - 1, mid; while(l < r){ mid = (l + r) / 2; if (isgood(mid))r = mid; else l = mid + 1; } if (l - 1 >= 0 and isgood(l - 1))l--; swap(a[l], a[a.size() - 1]); ans.pb(a.back()); a.pop_back(); } Answer(ans); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 15 ms | 344 KB | Wrong Answer [8] |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 15 ms | 344 KB | Wrong Answer [8] |
2 | Halted | 0 ms | 0 KB | - |