Submission #1164736

#TimeUsernameProblemLanguageResultExecution timeMemory
1164736SmuggingSpunThe Big Prize (IOI17_prize)C++20
97.50 / 100
22 ms11380 KiB
#include<bits/stdc++.h> #include "prize.h" using namespace std; const int SIZE = 495; int find_best(int n) { vector<vector<int>>cnt(n, vector<int>(2, -1)); auto id = [&] (int i){ if(cnt[i][0] != -1){ return cnt[i]; } return cnt[i] = ask(i); }; auto sum = [&] (int i){ return id(i)[0] + id(i)[1]; }; auto same = [&] (int i, int j){ return sum(i) == sum(j); }; int ans = -1; if(sum(0) == 0){ return 0; } if(sum(n - 1) == 0){ return n - 1; } queue<pair<int, int>>q; q.emplace(1, n - 2); while(true){ auto [l, r] = q.front(); q.pop(); if(l > r || (same(l - 1, r + 1) && id(r + 1)[0] - id(l - 1)[0] == 0)){ continue; } int m = (l + r) >> 1; if(sum(m) == 0){ return m; } q.emplace(l, m - 1); q.emplace(m + 1, r); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...