QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#882508 | #9734. Identify Chord | Sai_tqwq | WA | 1ms | 3712kb | C++14 | 1018b | 2025-02-05 08:43:08 | 2025-02-05 08:43:08 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int cas,n;
int query(int u,int v,int x=0){cout<<"? "<<u+1<<' '<<v+1<<endl;cin>>x;return x;}
void answer(int u,int v,int x=0){cout<<"! "<<u+1<<' '<<v+1<<endl;cin>>x;}
int ad(int x,int f=1){return (x+f)%n;}
int dec(int x,int f=1){return (x+n-f)%n;}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>cas;
while(cas--){
cin>>n;
int u=0,v=n>>1,x;
for(int op=0;(x=query(u,v))==n>>1;op^=1)
if(n&1){if(op)v++;else u++;}else u++,v++;
int lx=query(dec(u),v),rx=query(ad(u),v),w,d;
if(lx>=x&&rx>=x)w=u,d=x-1;
else if(lx<x){
int l=1,r=n>>1;
while(r>l){
int mid=l+r+1>>1;
if(query(dec(u,mid),v)==x-mid)l=mid;
else r=mid-1;
}
w=dec(u,l);d=x-l-1;
}else{
int l=1,r=n>>1;
while(r>l){
int mid=l+r+1>>1;
if(query(ad(u,mid),v)==x-mid)l=mid;
else r=mid-1;
}
w=ad(u,l);d=x-l-1;
}
if(query(w,ad(v,d))==1)answer(w,ad(v,d));
else answer(w,dec(v,d));
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3584kb
input:
2 6 2 2 1 1 1 1 4 1 1 1 1 1
output:
? 1 4 ? 6 4 ? 2 4 ? 3 4 ? 2 4 ! 2 4 ? 1 3 ? 4 3 ? 2 3 ? 1 3 ! 1 3
result:
ok ok (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3712kb
input:
1000 15 5 6 4 1 1 2 1 1 19 5 6 4 4 4 3 1 1 17 5 6 4 3 4 3 1 1 15 6 7 6 3 1 14 5 6 4 3 5 5 1 15 3 4 2 3 3 1 1 17 8 7 8 6 2 0 1 1 -1
output:
? 1 8 ? 15 8 ? 2 8 ? 5 8 ? 7 8 ? 6 8 ? 5 8 ! 5 8 ? 1 10 ? 19 10 ? 2 10 ? 6 10 ? 4 10 ? 3 10 ? 3 12 ! 3 12 ? 1 9 ? 17 9 ? 2 9 ? 6 9 ? 4 9 ? 3 9 ? 3 11 ! 3 11 ? 1 8 ? 15 8 ? 2 8 ? 1 13 ! 1 3 ? 1 8 ? 14 8 ? 2 8 ? 5 8 ? 3 8 ? 2 11 ! 2 5 ? 1 8 ? 15 8 ? 2 8 ? 5 8 ? 3 8 ? 2 9 ! 2 9 ? 1 9 ? 2 9 ? 1 9 ? 3 9 ...
result:
wrong answer Wrong answer n=17, actual=5-14, guessed=9-8 (test case 7)