Submission #405302

#TimeUsernameProblemLanguageResultExecution timeMemory
405302temurbek_khujaevThe Big Prize (IOI17_prize)C++17
0 / 100
90 ms320 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; int SQ; int first_small(int l, int r, int ls, int rs) { while (l <= r) { int m = (l + r) >> 1; vector<int> v = ask(m); if (v[0] + v[1] < SQ) { r = m; if (l == r) { if (v[0] + v[1] == 0) return -m; else return m; } } else { if (v[0] > ls) r = m - 1; else l = m + 1; } } } const int k = 300; int small_solution(int n) { for (int i = 0; i < n; i++) { vector<int> v = ask(i); if (v[0] + v[1] == 0) return i; } } int find_best(int n) { if (n < 5000) return small_solution(n); vector<int> v; SQ = sqrt(n); v = ask(n - 1); while (v[0] + v[1] < SQ) { if (v[0] + v[1] == 0) return n - 1; n--; v = ask(n - 1); } int i = min(n - 1, k); int lc = 0; int j = 0; while (true) { v = ask(i); while (v[0] + v[1] < SQ) v = ask(++i); int rc = v[1]; int cnt = v[0] - lc; while (cnt--) { int p = first_small(j + 1, i - 1, lc, rc); if (p < 0) return -p; j = p; } lc = v[0]; j = i; if (i == n - 1) break; i = min(i + k, n - 1); } return 0; }

Compilation message (stderr)

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