Submission #1161564

#TimeUsernameProblemLanguageResultExecution timeMemory
1161564thangdz2k7커다란 상품 (IOI17_prize)C++20
100 / 100
13 ms2056 KiB
#include <bits/stdc++.h> using namespace std; using pii = pair <int, int>; #ifdef ONLINE_JUDGE #include "prize.h" #else vector <int> ask(int i); #endif // ONLINE_JUDGE int find_best(int n){ try { vector <pii> ans(n); int rt = -1; auto get = [&](int x) -> void { if (ans[x].first || ans[x].second) return; vector <int> o = ask(x); if (!o[0] && !o[1]) throw(x); ans[x] = {o[0], o[1]}; }; auto g = [&](int x) -> int { get(x); return ans[x].first + ans[x].second; }; int mx = 0, l, r; for (l = 0; l < min(n, 500); ++ l){ get(l); mx = max(mx, ans[l].first + ans[l].second); if (mx > 50) break; } for (l = 0; g(l) < mx; ++ l); for (r = n - 1; g(r) < mx; -- r); function <void (int, int, int, int)> dnc = [&](int l, int r, int pl, int pr) -> void { if (pl == pr) return; int mid = l + r >> 1, m = mid; while (m >= l && g(m) < mx) m --; if (m >= l) dnc(l, m, pl, ans[m].first); dnc(mid + 1, r, m >= l ? ans[m].first + mid - m : pl + mid - l + 1, pr); }; dnc(l, r, ans[l].first, ans[r].first); } catch (int x){ return x; } }

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:61:1: warning: control reaches end of non-void function [-Wreturn-type]
   61 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...