이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "grader.h"
#include <algorithm>
#include <iostream>
using namespace std;
int R(int, int);
int L(int l, int r)
{
if (l == r)
return l;
int g = Guess(r);
if (g == 0)
{
return (l + r) / 2;
}
if (g == 1)
{
return R((l + r) / 2 + 1, r);
}
Guess(l);
return L(l, (l + r - 1) / 2);
}
int R(int l, int r)
{
if (l == r)
return l;
int g = Guess(l);
if (g == 0)
{
return (l + r) / 2;
}
if (g == 1)
{
return L(l, (l + r - 1) / 2);
}
Guess(r);
return R((l + r) / 2 + 1, r);
}
int N;
int search(int l, int r, int q)
{
if (l == r)
return l;
int m = (l + r) / 2;
int w = l + r - q;
w = clamp(w, 1, N);
// printf("%d %d %d %d\n", l, r, q, w);
m = (w + q) / 2;
int g = Guess(w);
if (2 * q < l + r)
{
if (g == 0)
return m;
if (g == 1)
return search(m + 1, r, w);
return search(l, m, w);
}
if (g == 0)
return m;
if (g == -1)
return search(m + 1, r, w);
return search(l, m, w);
}
int HC(int N_)
{
N = N_;
Guess(1);
// int guess = L(1, N);
int guess = search(1, N, 1);
return guess;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |