QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#630993#8939. Permutationwoodie_0064#WA 5ms3624kbC++171.0kb2024-10-11 21:16:402024-10-11 21:16:41

Judging History

This is the latest submission verdict.

  • [2024-10-11 21:16:41]
  • Judged
  • Verdict: WA
  • Time: 5ms
  • Memory: 3624kb
  • [2024-10-11 21:16:40]
  • Submitted

answer

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1e5 + 3;
const double D = 1 / 2.5874;
int T;
int n, num, ret;

int query(int l, int r){
	cout << "? " << l << " " << r << endl;
	cin >> ret;
	return ret;
}
void ans(int x){	cout << "! " << x << endl;}
int solve(int l, int r) {
	// <= 2
	if(l == r) {
		return l;
	}
	int x = query(l, r);
	if(r - l + 1 <= 2) {
		return (l == x) ? r : l;
	}
	while(1) {
		if(r - l + 1 <= 2) {
			return (l == x) ? r : l;
		}
		int len = D * (r - l + 1);
		if(r - len + 1 > x) {
			int y = query(l, r - len);
			if(y == x) {
				r = r - len;
			}
			else {
				return solve(r - len + 1, r);
			}
		}
		else {
			int y = query(l + len, r);
			if(y == x) {
				l = l + len;
			}
			else {
				return solve(l, l + len - 1);
			}
		}
	}
	
}
void work(){
	cin >> n; 
	int pos = solve(1, n);
	ans(pos);
}


int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> T;
	while(T--){
		work();
	}	
	return 0;
}

详细

Test #1:

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

input:

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

output:

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

result:

ok Correct (3 test cases)

Test #2:

score: -100
Wrong Answer
time: 5ms
memory: 3624kb

input:

10000
10
2
2
2
2
3
10
10
10
10
7
10
5
5
1
6
10
4
4
4
4
4

output:

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

result:

wrong answer Too many queries , n = 10 , now_q 6 (test case 4)