# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
584442 | PiejanVDC | The Big Prize (IOI17_prize) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h
#include "prize.h"
using namespace std;
int mn = INT_MAX;
int le = 0, ri;
int s(int l, int r) {
if(l < le || r > ri) {
if(max(l, le) > min(r, ri))
return -1;
return s(max(l, le), min(r, ri));
}
int mid = (l+r)/2;
vector<int>gt = ask(mid);
if(gt[0]+gt[1] <= mn) {
mn = gt[0]+gt[1];
if(gt[0] == 0)
le = max(le, mid+1);
if(!gt[1])
ri = min(ri, mid-1);
}
if(!gt[0] && !gt[1])
return mid;
if(l == r)
return -1;
int a = -1, b = -1;
if(gt[0] && l < mid)
a = s(l, mid-1);
if(gt[1] && r > mid)
b = s(mid+1, r);
return max(a,b);
}
int find_best(int n) {
ri = n-1;
return s(0,n-1);
}