Submission #637538

#TimeUsernameProblemLanguageResultExecution timeMemory
637538boris_mihovThe Big Prize (IOI17_prize)C++17
0 / 100
106 ms1836 KiB
#include "prize.h" #include <algorithm> #include <iostream> #include <numeric> #include <vector> typedef long long llong; const int MAXN = 200000 + 10; const int INF = 1e9; int ans; std::pair <int,int> asked[MAXN]; inline std::pair <int,int> query(int pos) { if (asked[pos].first != -1) return asked[pos]; std::vector <int> res = ask(pos - 1); if (res[0] + res[1] == 0) ans = pos; return asked[pos] = {res[0], res[1]}; } int leftCnt; int rightCnt; int cntBig; int binarySearchLeft(int from, int to) { int l = from, r = to - 1, mid; while (l < r - 1) { int mid = (l + r) / 2; auto [left, right] = query(mid); if (ans != 0) return -1; if (left + right != cntBig) { r = mid; continue; } if (left - (mid - from) != cntBig) { r = mid; continue; } l = mid; } return r; } int binarySearchRight(int from, int to) { int l = from + 1, r = to, mid; while (l < r - 1) { int mid = (l + r) / 2; auto [left, right] = query(mid); if (ans != 0) return -1; if (left + right != cntBig) { l = mid; continue; } if (right - (to - mid) != cntBig) { l = mid; continue; } r = mid; } return l; } int find_best(int n) { srand(69); std::fill(asked + 1, asked + 1 + n, std::make_pair(-1, -1)); for (int i = 1 ; i <= 10 ; ++i) { int rndPos = rand()%n + 1; cntBig = std::max(cntBig, query(rndPos).first + query(rndPos).second); } int l = 0, r = n + 1; while (ans == 0) { if (rand()%2 == 0) l = binarySearchLeft(l, r); else r = binarySearchRight(l, r); } return ans - 1; }

Compilation message (stderr)

prize.cpp: In function 'int binarySearchLeft(int, int)':
prize.cpp:26:31: warning: unused variable 'mid' [-Wunused-variable]
   26 |     int l = from, r = to - 1, mid;
      |                               ^~~
prize.cpp: In function 'int binarySearchRight(int, int)':
prize.cpp:52:31: warning: unused variable 'mid' [-Wunused-variable]
   52 |     int l = from + 1, r = to, mid;
      |                               ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...