QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#625890 | #8939. Permutation | sjw712 | TL | 0ms | 0kb | C++14 | 893b | 2024-10-09 21:35:53 | 2024-10-09 21:35:54 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
#define x first
#define y second
using namespace std;
typedef pair<int, int> pii;
int ask(int l, int r){
cout << "? " << l << " " << r << endl;
int res;
cin >> res;
return res;
}
void solve(){
// 2 5 1 3 4
int n;
cin >> n;
int l = 1, r = n;
int last;
while(l < r){
last = ask(l, r);
if(r - l == 1){
if(last == l){
l = r;
break;
}
else break;
}
int mid = l + r >> 1;
if(last > mid){
if(mid + 1 == r){
l = r;
break;
}
if(ask(mid + 1, r) == last){
l = mid + 1;
}
else r = mid;
}
else{
if(l == mid) break;
if(ask(l, mid) == last){
r = mid;
}
else l = mid + 1;
}
}
cout << "! " << l << '\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t = 1;
cin >> t;
while(t --){
solve();
}
}
詳細信息
Test #1:
score: 0
Time Limit Exceeded
input:
3 5 3 2 5
output:
? 1 5 ? 1 3 ? 4 5