QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#884663#9734. Identify ChordZpairWA 8ms3840kbC++171.4kb2025-02-06 09:56:362025-02-06 09:56:36

Judging History

This is the latest submission verdict.

  • [2025-02-06 09:56:36]
  • Judged
  • Verdict: WA
  • Time: 8ms
  • Memory: 3840kb
  • [2025-02-06 09:56:36]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
int n;
int x,y;
int dis(int u,int v){
	int d=abs(u-v);
	return min(d,n-d);
}
int ask(int u,int v){
	assert(u>=0);
	assert(u<n);
	assert(v>=0);
	assert(v<n);
	printf("? %d %d\n",u+1,v+1);
	fflush(stdout);

//	return min({dis(u,x)+1+dis(y,v),dis(u,y)+1+dis(x,v),dis(u,v)});
	int d;scanf("%d",&d);
	return d;
}
void ret(int u,int v){
	assert(u>=0);
	assert(u<n);
	assert(v>=0);
	assert(v<n);
	printf("! %d %d\n",u+1,v+1);
	fflush(stdout);
	int d;scanf("%d",&d);
}

int get(int x){
	return (x%n+n)%n;
}
void solve(){
	cin>>n;
//	cin>>x>>y;
	int u=0,v=(n+1)/2;
	for(int i=1;ask(u,v)==n/2;++i){
		if(n&1){
			if(i&1)u=get(u+1);
			else v=get(v+1);
		}
		else{
			u=get(u+1);
			v=get(v+1);
		}
	}
	int d1=ask(get(u+1),v);
	int d2=ask(get(u-1),v);
	if(d1!=d2){
		int opt=(d1<d2?1:-1);
		int l=1,r=n/2,mid=(l+r)>>1,ans=0;
		int uu=get(u+opt);
		int d=dis(uu,v)-ask(uu,v);
		while(l<=r){
			int w=get(u+mid*opt);
			if(dis(w,v)-ask(w,v)==d)
				ans=mid,l=mid+1;
			else r=mid-1;
			mid=(l+r)>>1;
		}		
		assert(ans!=0);
		int w=get(u+ans*opt),nd=ask(w,v);
		int z=get(v-(nd-1)*opt);
		if(ask(w,z)==1)
			ret(w,z);
		else{
			z=get(v+(nd-1)*opt);
			ret(w,z);	
		}
	}
	else{
		int nd=ask(u,v);
		int w=get(v+(nd-1));
		if(ask(u,w)==1)ret(u,w);
		else{
			w=get(v-(nd-1));
			ret(u,w);
		}
	}
}
int main(){
	int T;cin>>T;
	while(T--)solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3712kb

input:

2
6
2
1
2
1
1
1
1
1
1
4
1
1
1
1
1
1

output:

? 1 4
? 2 4
? 6 4
? 2 4
? 3 4
? 2 4
? 2 4
? 2 4
! 2 4
? 1 3
? 2 3
? 4 3
? 1 3
? 1 3
! 1 3

result:

ok ok (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 8ms
memory: 3840kb

input:

1000
15
6
5
6
5
2
2
3
2
1
1
19
4
3
5
3
5
2
3
2
3
1
17
4
3
5
3
4
2
3
2
3
1
15
7
7
7
7
6
7
6
6
3
1
0
0
1
-1

output:

? 1 9
? 2 9
? 15 9
? 2 9
? 5 9
? 7 9
? 6 9
? 5 9
? 5 8
! 5 8
? 1 11
? 2 11
? 19 11
? 2 11
? 6 11
? 3 11
? 4 11
? 3 11
? 3 10
! 3 12
? 1 10
? 2 10
? 17 10
? 2 10
? 5 10
? 3 10
? 4 10
? 3 10
? 3 9
! 3 11
? 1 9
? 2 9
? 2 10
? 3 10
? 3 11
? 4 11
? 2 11
? 2 11
? 14 11
? 12 11
? 11 11
? 11 11
? 11 10
! 11...

result:

wrong answer Wrong answer n=15, actual=1-3, guessed=11-10 (test case 4)