QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#858227 | #8939. Permutation | bamboo123 | WA | 1ms | 3456kb | C++14 | 759b | 2025-01-16 15:10:09 | 2025-01-16 15:10:18 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e6 + 5;
int query(int l, int r) {
cout << "? " << l << " " << r << endl;
int x; cin >> x;
return x;
}
int getlen(int l, int r) {
return (r - l) * 2 / 3;
}
void solve() {
int n; cin >> n;
int l = 1, r = n, lst = query(1, n);
while(l + 1 < r) {
lst = query(l, r);
if(lst <= (l + r) / 2) {
int mid = l + getlen(l, r);
if(lst == query(l, mid))
r = mid;
else
l = mid;
}
else {
int mid = r - getlen(l, r);
if(lst == query(mid, r))
l = mid;
else
r = mid;
}
}
cout << "!" << (l == r ? l : (l == lst ? r : l)) << endl;
}
signed main() {
int T; cin >> T;
while(T--)
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3456kb
input:
3 5 3 3 2
output:
? 1 5 ? 1 5 ? 1 3 ? 3 5
result:
wrong answer Too long queries, n = 5, now length 16 (test case 1)