이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "prize.h"
#include<vector>
#include<map>
#include<utility>
#include<cassert>
#define MAXN 200005
using namespace std;
map<int, int> Q[MAXN];
int slv(int l, int r) {
if (l == r) {return(l);}
int mid = (l + r) >> 1;
vector<int> res = ask(mid);
int tot = res[0] + res[1], resL=-1, resR=-1;
if (tot == 0) {return(mid);}
auto ptr1 = Q[tot].insert({mid, res[0]}).first, ptr2=ptr1;
if ((ptr1 == Q[tot].begin() || (*(--ptr1)).second != res[0]) && res[0]) {
resL = slv(l, mid-1);
}
if (((++ptr2) == Q[tot].end() || (*ptr2).second != res[0]) && res[1]) {
resR = slv(mid+1, r);
}
return(resL != -1 ? resL : resR);
}
int find_best(int n) {
return(slv(0, n-1));
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |