Submission #1030953

#TimeUsernameProblemLanguageResultExecution timeMemory
1030953coolboy19521The Big Prize (IOI17_prize)C++17
90 / 100
55 ms596 KiB
#include "prize.h" #include "iostream" using namespace std; int find_best(int n) { int mx = 0, xx = 500; for (int i = 0; i < min(n, 500); 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; } int ls = 500; for (; ls < n;) { int ps = -1; 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) / 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...