Submission #574551

#TimeUsernameProblemLanguageResultExecution timeMemory
574551valerikkThe Big Prize (IOI17_prize)C++17
0 / 100
82 ms11192 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; mt19937 rnd(239); namespace { int mx_cnt; } vector<vector<int>> mem; vector<int> mask(int i) { return mem[i] == vector<int>{-1, -1} ? mem[i] = ask(i) : mem[i]; } int solve(int l, int r) { if (l > r) return -1; if (l == r) { auto a = mask(l); if (a[0] + a[1] == 0) return l; return -1; } auto al = mask(l); auto ar = mask(r); if (al[0] + al[1] == 0) return l; if (ar[0] + ar[1] == 0) return r; if (al[0] + al[1] == ar[0] + ar[1] == mx_cnt && al[0] == ar[0]) return -1; int m = (l + r) / 2; int res = solve(l, m); if (res == -1) res = solve(m + 1, r); return res; } int find_best(int n) { mem.resize(n, vector<int>{-1, -1}); return solve(0, n - 1); }

Compilation message (stderr)

prize.cpp: In function 'int solve(int, int)':
prize.cpp:39:20: warning: suggest parentheses around comparison in operand of '==' [-Wparentheses]
   39 |  if (al[0] + al[1] == ar[0] + ar[1] == mx_cnt && al[0] == ar[0])
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...