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 namespace std;
typedef long long ll;
const int N = 3e5 + 5, MOD = 998244353;
int LST = -1;
int ask(int x,int y){
cout << "? " << x << endl;
int a;cin >> a;
cout << "? " << y << endl;
cin >> a;
LST = y;
return a;
}
int n;
bool vis[N];
bool check(int x){
if(LST + x <= n && !vis[LST + x]){
cout << "? " << LST + x << endl;
int a;
cin >> a;
vis[LST + x] = 1;
LST += x;
return a;
}
x *= -1;
if(LST + x >= 1&& !vis[LST + x]){
cout << "? " << LST + x << endl;
int a;
cin >> a;
vis[LST + x] = 1;
LST += x;
return a;
}
x *= -1;
for(int i = n;i >= 1;i--){
if(i + x <= n && !vis[i] && !vis[i + x]){
vis[i] = vis[i + x] = 1;
return ask(i,i+x);
}
}
return false;
}
void test() {
cin >> n;
int l = 0,r = n;
while(r - l > 1){
int mid = (l + r) >> 1;
if(check(mid)){
r = mid;
}else
l = mid;
}
cout << "= " << r << endl;
}
int main(){
ios_base::sync_with_stdio(false);cin.tie(0);
int T = 1;
// cin >> T;
while(T--){
test();
}
}
# | 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... |