This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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);
std::cout << "= " << (ask(2) ? 1 : 2) << '\n';
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... |