# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
224450 | jhnah917 | Hotter Colder (IOI10_hottercolder) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "grader.h"
#include <bits/stdc++.h>
using namespace std;
int sub3(int N){
int l = 1, r = N;
while(l < r){
int m = l + r >> 1;
int a = Guess(l), b = Guess(r);
if(b == 1) l = m + 1;
else if(b == -1) r = l + r - 1 >> 1;
else return m;
}
return l;
}
int HC(int N){
if(N <= 500) return sub3(N);
int l = 1, r = N;
int prv = (l + l + r) / 3; guess(prv);
while(l < r){
int m1 = (l + l + r) / 3, m2 = (l + r + r) / 3;
int now = abs(prv - m1) < abs(prv - m2) ? m2 : m1;
int qry = Guess(qry);
if(qry == 1){
if(prv < now) l = max(l, prv + now + 1 >> 1);
else r = min(r, prv + now >> 1);
}else if(qry == -1){
if(prv < now) r = min(r, prv + now >> 1);
else l = max(l, prv + now + 1 >> 1);
}else return (prv + now >> 1);
}
return l;
}