Submission #1031003

#TimeUsernameProblemLanguageResultExecution timeMemory
1031003coolboy19521The Big Prize (IOI17_prize)C++17
100 / 100
40 ms5764 KiB
#include "prize.h" #include "iostream" using namespace std; const int sz = 2e5 + 10; vector<int> bf[sz]; vector<int> Ask(int x) { if (bf[x].size()) return bf[x]; return bf[x] = ask(x); } int find_best(int n) { int mx = 0, xx = 600; for (int i = 0; i < min(n, 600); i ++) { auto pr = Ask(i); mx = max(mx, pr[0] + pr[1]); if (0 == pr[0] + pr[1]) return i; if (30 < mx) { xx = i + 1; break; } } int ls = xx; while (ls < n) { int ps; for (; ls < n; ls ++) { auto pr = Ask(ls); int sm = pr[0] + pr[1]; if (0 == sm) return ls; if (sm == mx) { ps = pr[1]; break; } } int ds = xx; int rs = n; while (1 < rs - ds) { int mi = (ds + rs + 1) / 2; if (mi <= ls) { ds = mi; continue; } auto pr = Ask(mi); int sm = pr[0] + pr[1]; if (0 == sm) return mi; if (sm != mx) rs = mi; if (0 == ps - pr[1]) ds = mi; else rs = mi; } ls = ds + 1; } return 0; }

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:50:13: warning: 'ps' may be used uninitialized in this function [-Wmaybe-uninitialized]
   50 |             if (0 == ps - pr[1]) ds = mi;
      |             ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...