QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#603250 | #8939. Permutation | propane# | WA | 1ms | 3584kb | C++20 | 1.6kb | 2024-10-01 15:31:02 | 2024-10-01 15:31:05 |
Judging History
answer
#include<iostream>
#include<cstring>
#include<vector>
#include<cmath>
using namespace std;
using LL = long long;
int main(){
// #ifdef LOCAL
// freopen("data.in", "r", stdin);
// freopen("data.out", "w", stdout);
// #endif
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
// int t = 1000000;
// cout << ceil(1.5 * log2(t)) << '\n';
// int cnt = 0;
// while(t) cnt += 1, t = t * 0.618;
// cout << cnt << '\n';
// 要么两次操作 长度 * (1 - 0.618)
// 要么依次操作 长度 * 0.618
auto ask = [&](int l, int r){
cout << l << ' ' << r << endl;
int t;
cin >> t;
return t;
};
auto solve = [&](auto &&solve, int l, int r, int p2) -> void {
if (l == r){
cout << "! " << r << endl;
return;
}
if (p2 == 0) p2 = ask(l, r);
if (r - l + 1 == 2){
cout << "! " << (l == p2 ? r : l) << endl;
return;
}
int len = (r - l + 1) * 0.618;
len = max(len, 2);
if (p2 >= l and p2 <= l + len - 1){
int t = ask(l, l + len - 1);
if (t == p2) solve(solve, l, l + len - 1, p2);
else solve(solve, l + len, r, 0);
}
else{
int t = ask(r - len + 1, r);
if (t == p2) solve(solve, r - len + 1, r, p2);
else solve(solve, l, r - len, 0);
}
};
int T;
cin >> T;
while(T--){
int n;
cin >> n;
solve(solve, 1, n, 0);
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3584kb
input:
3 5
output:
1 5
result:
wrong answer Token parameter [name=type] equals to "1", doesn't correspond to pattern "?|!" (test case 1)