QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#599486 | #8939. Permutation | professor_panda | WA | 0ms | 3680kb | C++14 | 1.6kb | 2024-09-29 05:33:25 | 2024-09-29 05:33:26 |
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 - l) * rat);
if (query (l, mid) == ioslv) {
r = mid;
}
else {
l = mid + 1;
ioslv = query(l, r);
}
}
else {
mid = int(r - (r - l) * rat + 1);
if (query(mid, r) == ioslv) {
l = mid + 1;
}
else {
r = mid;
ioslv = query(l, r);
}
}
}
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;
}
if (l + 1 == query(l, l + 1)) {
return l;
}
return r;
}
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: 0ms
memory: 3680kb
input:
3 5 3 2 5 6 6 3 3 1 4 3 3
output:
? 1 5 ? 1 3 ? 4 5 ! 4 ? 1 6 ? 3 6 ? 1 3 ? 1 2 ! 2 ? 1 4 ? 3 4 ? 4 5
result:
wrong answer Integer 4 violates the range [1, 3] (test case 3)