Submission #1326116

#TimeUsernameProblemLanguageResultExecution timeMemory
1326116ppmn_6Library (JOI18_library)C++20
100 / 100
119 ms412 KiB
#include "bits/stdc++.h" #include "library.h" using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); // https://codeforces.com/blog/entry/79148 class Timer: chrono::high_resolution_clock { const time_point start_time; public: Timer(): start_time(now()) {} rep elapsed_time() const { return chrono::duration_cast<chrono::milliseconds>(now() - start_time).count(); } } timer; void Solve(int n) { vector<bool> vis(n + 1, 0); deque<int> ans(1, 1); auto ask = [&] (int l, int r, int x) { int cnt = 0; vector<int> m(n, 0); for (int i = l; i <= r; i++) { if (!vis[i]) { m[i - 1] = 1; cnt++; } } if (!cnt) { return false; } int res = Query(m); m[x - 1] = 1; return Query(m) <= res; }; vis[1] = 1; int lb = 1, rb = 1, rem = n - 1; auto find_m = [&] (int l, int r, int cur) { int cnt = 0; for (int i = l; i <= r; i++) { if (!vis[i]) { cnt++; if (cnt == cur) { return i; } } } }; while (true) { int l = 1, r = n, cur = rem; while (cur > 3) { int m = find_m(l, r, cur / 2); if (ask(m, r, rb)) { l = m; cur = cur - cur / 2 + 1; } else { r = m; cur = cur / 2; } } int res = -1; for (int i = l; i <= r; i++) { if (!vis[i] && ask(i, i, rb)) { res = i; break; } } if (res == -1) { break; } vis[res] = 1; ans.push_back(res); rb = res; rem--; } while (true) { if (ans.size() == n) { break; } int l = 1, r = n, cur = rem; while (cur > 3) { int m = find_m(l, r, cur / 2); if (ask(m, r, lb)) { l = m; cur = cur - cur / 2 + 1; } else { r = m; cur = cur / 2; } } int res; for (int i = l; i <= r; i++) { if (!vis[i] && ask(i, i, lb)) { res = i; break; } } vis[res] = 1; ans.push_front(res); lb = res; rem--; } vector<int> ret; for (auto &x : ans) { ret.push_back(x); } Answer(ret); }

Compilation message (stderr)

library.cpp: In lambda function:
library.cpp:51:9: warning: control reaches end of non-void function [-Wreturn-type]
   51 |         };
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...