QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#881820#9734. Identify ChordDaiRuiChen007WA 1ms3456kbC++17877b2025-02-04 18:30:362025-02-04 18:30:38

Judging History

This is the latest submission verdict.

  • [2025-02-04 18:30:38]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3456kb
  • [2025-02-04 18:30:36]
  • Submitted

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)