QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#858243#8939. PermutationlittleandyTL 0ms0kbC++14815b2025-01-16 15:17:242025-01-16 15:17:25

Judging History

This is the latest submission verdict.

  • [2025-01-16 15:17:25]
  • Judged
  • Verdict: TL
  • Time: 0ms
  • Memory: 0kb
  • [2025-01-16 15:17:24]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
const double P = (sqrt(5) - 1.0) / 2.0;
int ask(int l, int r) {
	if (l == r) return 0;
	printf("? %d %d\n", l, r);
	int res; scanf("%d", &res);
	return res;
}
void solve(int l, int r, int res) {
	if (l == r) {printf("! %d\n", l); return;}
	int mid1 = floor(double(l * (1.0 - P) + r * P));
	int mid2 = floor(double(l * P + r * (1.0 - P)));
	if (res <= mid2) {
		int Res = ask(l, mid1);
		if (res == Res) solve(l, mid1, Res);
		else solve(mid1 + 1, r, ask(mid1 + 1, r));
	} else {
		int Res = ask(mid2 + 1, r);
		if (res == Res) solve(mid2 + 1, r, Res);
		else solve(l, mid2, ask(l, mid2));
	}
}
void work() {
	int n;
	scanf("%d", &n);
	solve(1, n, ask(1, n));
}
int main() {
	int t, n;
	scanf("%d", &t);
	while (t--) work();
	return 0;
}

详细

Test #1:

score: 0
Time Limit Exceeded

input:

3
5

output:


result: