QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#567061#8939. PermutationmaxrgbyWA 1ms3684kbC++141.0kb2024-09-16 05:52:012024-09-16 05:52:01

Judging History

This is the latest submission verdict.

  • [2024-09-16 05:52:01]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3684kb
  • [2024-09-16 05:52:01]
  • Submitted

answer

// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

double ra = 0.6;

int query(int a, int b){
	int ret;
	cout << "? " << a << " " << b << endl;
	cin >> ret;
	return ret;
}

int solve(int n){
	int pos = query(1,n);
	int l = 1;
	int r = n;
	while(r-l > 2){
		int mid;
		if(pos <= l+(r-l)*ra){
			mid = r-(r-l)*ra+1;
			if(query(l,mid) == pos){
				r = mid;
			}else{
				l = mid+1;
				pos = query(l,r);
			}
		}else{
			mid = l+(r-l)*ra;
			if(query(mid,r) == pos){
				l = mid;
			}else{
				r = mid-1;
				pos = query(l,r);
			}
		}
	}
	if(l == r-1){
		if(pos == l){
			return r;
		}
		return l;
	}
	if(l == pos){
		if(query(r-1,r) == r){
			return r-1;
		}
		return r;
	}
	if(r == pos){
		if(query(l,l+1) == l){
			return l+1;
		}
		return l;
	}
	if(l+1 == query(l,l+1)){
		return l;
	}
	return r;
}

int main() {
	int t;
	cin >> t;
	while(t--){
		int n;
		cin >> n;
		int tmp = solve(n);
		cout << "! " << tmp << endl;
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

3
5
3
2
5
6
6
5
3
1
4
3
3
2

output:

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

result:

ok Correct (3 test cases)

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3684kb

input:

10000
10
2
2
3
5
10
10
10
8
7
10
5
1
10
9
6
10
4
4
4
4
10
10
6
3
3
2
10
3
3
3
2
10
1
5
9
9
9
10
1
3
8
8
6
10
2
4
9
9
8
10
3
3
1
5
10
4
1
7
8
9
10
8
7
1
1
2
10
4
1
9
9
8
10
7
8
2
1
4
10
5
1
7
6
10
10
8
8
6
9
10
2
1
7
7
7
10
6
3
6
8
10
10
1
3
8
8
6
10
7
9
5
5
4
10
7
8
4
4
4
10
3
4
7
8
10
10
4
4
4
3
10...

output:

? 1 10
? 1 5
? 1 3
? 4 5
! 4
? 1 10
? 6 10
? 8 10
? 6 7
! 6
? 1 10
? 1 5
? 6 10
? 8 10
? 6 7
! 7
? 1 10
? 1 5
? 3 5
? 3 4
! 3
? 1 10
? 6 10
? 1 5
? 1 3
? 1 2
! 1
? 1 10
? 1 5
? 1 3
? 1 2
! 1
? 1 10
? 1 5
? 6 10
? 8 10
? 8 9
! 8
? 1 10
? 1 5
? 6 10
? 6 8
? 6 7
! 7
? 1 10
? 1 5
? 6 10
? 8 10
? 8 9
! 1...

result:

wrong answer Wrong prediction (test case 30)