Submission #834105

#TimeUsernameProblemLanguageResultExecution timeMemory
834105caganyanmazThe Big Prize (IOI17_prize)C++17
0 / 100
9 ms348 KiB
#include <bits/stdc++.h> #define pb push_back #include "prize.h" using namespace std; //#define DEBUGGING #ifdef DEBUGGING #include "../debug.h" #else #define debug(x...) void(42) #endif constexpr static int BLOCK_SIZE = 500; constexpr static int LBN = 5000; constexpr static int MXN = 2e5; bitset<MXN> expensive; int brute(int n); int find_best(int n) { // Get rid of smaller cases if (n < 5000) return brute(n); // Finding one cheap prize (getting expesive ones are better) int ecount = 0; vector<int> c; for (int i = 0; i < BLOCK_SIZE; i++) { vector<int> v = ask(i); c.pb(v[0] + v[1]); ecount = max(ecount, c[0]); } int s = 0; vector<int> vv; for (int i = 0; i < BLOCK_SIZE; i++) { if (c[i] != ecount) { expensive[i] = true; vv.pb(i); } } while (vv.size() < ecount) { int l = 0, r = n; while (r - l > 1) { int m = l+r>>1; int j = m; while (expensive[j]) j++; vector<int> v = ask(j); if (v[0] + v[1] < ecount) { l = j; expensive[j] = true; break; } if (v[0] > upper_bound(vv.begin(), vv.end(), j) - vv.begin()) r = m; else l = m; } vv.insert(lower_bound(vv.begin(), vv.end(), l), l); } for (int i = 0; i < n; i++) { if (expensive[i]) { vector<int> v = ask(i); if (v[0] + v[1] == 0) return i; } } return -1; } int brute(int n) { for (int i = 0; i < n; i++) { vector<int> v = ask(i); if (v[0] + v[1] == 0) return i; } return -1; }

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:44:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   44 |  while (vv.size() < ecount)
      |         ~~~~~~~~~~^~~~~~~~
prize.cpp:49:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   49 |    int m = l+r>>1;
      |            ~^~
prize.cpp:33:6: warning: unused variable 's' [-Wunused-variable]
   33 |  int s = 0;
      |      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...