이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using ll = long long;
bool ask(const ll x) {
std::cout << "? " << x << std::endl;
bool f;
std::cin >> f;
return f;
}
int main() {
ll N;
std::cin >> N;
assert(N <= 125);
if (N == 2) {
ask(1);
const auto ans = (ask(2) ? 1 : 2);
std::cout << "= " << ans << std::endl;
return 0;
}
ll half = (N - 1) / 2;
ll other = (N - 1) - half;
ll pos = 1 + (other + 1) / 2;
ask(pos);
pos += half;
if (ask(pos)) {
ll len = half;
ll dir = -1;
while (--len > 0) {
pos += dir * len;
dir *= 1;
if (!ask(pos)) {
break;
}
}
std::cout << "= " << len + 1 << std::endl;
}
else {
ll len = half;
ll dir = -1;
while (++len < N) {
pos += dir * len;
dir *= -1;
if (ask(pos)) {
break;
}
}
std::cout << "= " << len << std::endl;
}
return 0;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |