Submission #1018063

#TimeUsernameProblemLanguageResultExecution timeMemory
1018063davit_tsibadzeLibrary (JOI18_library)C++17
0 / 100
22 ms344 KiB
#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 int d; vector <int> ans, m, a; bool isgood(int mid){ for (int i = 0; i < (int)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; return (x == Query(m)); } void Solve(int N){ bool used[N + 1] = {}; while((int)m.size() < N)m.pb(1); if (N == 1){ ans.pb(1); Answer(ans); return; } for (int i = 1; i <= N; i++){ m[i - 1] = 0; if (Query(m) == 1){d = i; break;} m[i] = 1; } ans.pb(d); used[d] = true; for (int i = 1; i <= N; i++) if (!used[i])a.pb(i); while(a.size()){ int l = 0, r = a.size() - 1, mid, answ = a.size() - 1; while(l <= r){ mid = (l + r) / 2; if (isgood(mid)) { answ = mid; r = mid - 1; } else l = mid + 1; } ans.pb(a[answ]); used[a[answ]] = true; a.clear(); for (int i = 1; i <= N; i++) if (!used[i])a.pb(i); } Answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...