Submission #597312

#TimeUsernameProblemLanguageResultExecution timeMemory
597312Soumya1The Big Prize (IOI17_prize)C++17
96.10 / 100
59 ms5372 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; const int S = 500; vector<vector<int>> a; int ans, mx; vector<int> query(int i) { if (a[i].size()) return a[i]; return a[i] = ask(i); } void solve(int l, int r, int pref, int suf) { if (l > r) return; if (pref + suf == mx) return; int m = (l + r) >> 1; while (m >= l) { auto g = query(m); if (g[0] + g[1] == 0) { ans = m; return; } if (g[0] + g[1] == mx) { int tot = g[0] - pref; solve(l, m - 1, pref, g[1]); break; } m--; } if (ans) return; if (m <= l) { solve((l + r) / 2 + 1, r, query((l + r) / 2)[0], suf); if (ans) return; } else { solve(m + 1, r, query(m)[0], suf); } } int find_best(int n) { a.resize(n); if (n <= 5000) { for (int i = 0; i < n; i++) { auto g = query(i); if (g[0] + g[1] == 0) return i; } } int who = 0; for (int i = 0; i < S; i++) { auto g = query(i); if (mx < g[0] + g[1]) { mx = g[0] + g[1]; who = i; } if (g[0] + g[1] == 0) { return i; } } solve(who + 1, n - 1, query(who)[0], query(n - 1)[1]); return ans; }

Compilation message (stderr)

prize.cpp: In function 'void solve(int, int, int, int)':
prize.cpp:22:8: warning: unused variable 'tot' [-Wunused-variable]
   22 |    int tot = g[0] - pref;
      |        ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...