QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#881820 | #9734. Identify Chord | DaiRuiChen007 | WA | 1ms | 3456kb | C++17 | 877b | 2025-02-04 18:30:36 | 2025-02-04 18:30:38 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int n;
int qry(int x,int y) {
cout<<"? "<<x%n+1<<" "<<y%n+1<<endl;
int o; cin>>o; return o;
}
void solve() {
cin>>n;
int x=0,y=n/2,d;
for(int t=0;;t^=1) {
d=qry(x,y);
if(d<n/2) break;
if(n%2==0) ++x,++y;
else t?++x:++y;
}
int dl=qry((x+n-1)%n,y),dr=qry((x+1)%n,y),u,k;
if(dl>=d&&dr>=d) u=x,k=d-1;
else if(dl<d) {
int l=1,r=n/2,p=1;
while(l<=r) {
int mid=(l+r)>>1;
if(qry((x+n-mid)%n,y)==d-mid) p=mid,l=mid+1;
else r=mid-1;
}
u=(x+n-p)%n,k=d-p-1;
} else {
int l=1,r=n/2,p=1;
while(l<=r) {
int mid=(l+r)>>1;
if(qry((x+mid)%n,y)==d-mid) p=mid,l=mid+1;
else r=mid-1;
}
u=(x+p)%n,k=d-p-1;
}
int v=(y+k)%n;
if(qry(u,v)!=1) v=(y+n-k)%n;
cout<<"! "<<u<<" "<<v<<endl,cin>>d;
}
signed main() {
int _; cin>>_;
while(_--) solve();
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3456kb
input:
2 6 2 2 1 1 1 1 -1
output:
? 1 4 ? 6 4 ? 2 4 ? 3 4 ? 2 4 ? 2 4 ! 1 3
result:
wrong answer Wrong answer n=6, actual=2-4, guessed=1-3 (test case 1)