Submission #333203

#TimeUsernameProblemLanguageResultExecution timeMemory
333203mohamedsobhi777The Big Prize (IOI17_prize)C++14
90 / 100
89 ms5432 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 10; const int thr = 950; vector<int> Qu[200000 + 10]; int freq[200000 + 10]; int enough; vector<int> Ask(int i) { if (Qu[i].empty()) Qu[i] = ask(i); return Qu[i]; } inline int sum(int i) { return Qu[i][0] + Qu[i][1]; } int solve1(int n) { for (int i = 0; i < n; ++i) { Ask(i); if (!sum(i)) return i; } } int find_best(int n) { if (n <= 4800) return solve1(n); for (int i = 0; i < thr; ++i) { Ask(i); freq[sum(i)]++; if (sum(i) == 0) return i; } int mc = 0, Max = 0; for (int i = 0; i < N; ++i) { if (freq[i] > Max) Max = freq[i], mc = i; } for (int i = 0; i < thr; ++i) enough += sum(i) != mc; for (int i = thr; i < n; ++i) { Ask(i); if (sum(i) != mc) { if (sum(i) == 0) return i; ++enough; continue; } int lo = i, hi = min(i + 500, n - 1); int j = i; while (lo <= hi) { int mid = (lo + hi) >> 1; Ask(mid); if (sum(mid) != mc || Qu[mid][0] - enough > 0) hi = mid - 1; else j = mid, lo = mid + 1; } i = j; } }

Compilation message (stderr)

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