QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#599455 | #8939. Permutation | professor_panda | WA | 1ms | 3660kb | C++14 | 1.4kb | 2024-09-29 05:02:56 | 2024-09-29 05:02:57 |
Judging History
answer
#include <bits/stdc++.h>
#define fastio ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const double rat = 0.618;
int query (int l, int r) {
int index;
cout << "? " << l << ' ' << r << endl;
cin >> index;
return index;
}
int solve (int n) {
int ioslv = query (1, n);
int l = 1;
int r = n;
while (r - l > 2) {
int mid;
if (ioslv <= l + (r - l)* rat) {
mid = int(l + r * rat);
if (query (l, mid) == ioslv) {
r = mid;
}
else {
l = mid + 1;
ioslv = query (l, r);
}
}
else {
mid = int(r - (r - l) * rat);
if (query(mid, r) == ioslv) {
l = mid + 1;
}
else {
r = mid;
}
}
}
if (l == r - 1) {
if (ioslv == l) {
return r;
}
return l;
}
if (l == ioslv) {
if (query(r - 1, r) == r) {
return r - 1;
}
return r;
}
if (r == ioslv) {
if (query (l, l + 1) == l) {
return l + 1;
}
return l;
}
}
int main() {
fastio;
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
int ans = solve(N);
cout << "! " << ans << endl;
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3660kb
input:
3 5 3 3 3 6 6 6 5
output:
? 1 5 ? 1 4 ? 2 4 ! 4 ? 1 6 ? 2 6 ? 4 6 ! 3
result:
wrong answer Wrong prediction (test case 2)