Submission #333191

#TimeUsernameProblemLanguageResultExecution timeMemory
333191mohamedsobhi777The Big Prize (IOI17_prize)C++14
90 / 100
111 ms5484 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 10; 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 <= 4000) return solve1(n); for (int i = 0; i < 1000; ++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 < 1000; ++i) enough += sum(i) != mc; for (int i = 1000; i < n; ++i) { Ask(i); if (sum(i) != mc) { if (sum(i) == 0) return i; ++enough; continue; } int lo = i, hi = 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...