QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#881818#9734. Identify ChordDaiRuiChen007TL 0ms0kbC++17875b2025-02-04 18:29:202025-02-04 18:29:20

Judging History

This is the latest submission verdict.

  • [2025-02-04 18:29:20]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 0kb
  • [2025-02-04 18:29:20]
  • 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-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
Time Limit Exceeded

input:

2
6
2

output:

? 1 4
? 0 4

result: