QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#631016#8939. PermutationyanchengzhiWA 5ms3704kbC++201.4kb2024-10-11 21:25:032024-10-11 21:25:04

Judging History

This is the latest submission verdict.

  • [2024-10-11 21:25:04]
  • Judged
  • Verdict: WA
  • Time: 5ms
  • Memory: 3704kb
  • [2024-10-11 21:25:03]
  • Submitted

answer

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1e5 + 3;
const double D = 1 / 2.5874;
int T;
int n, num, ret;

int query(int l, int r){
    if(l == r) {
        return -1;
    }
    cout << "? " << l << " " << r << endl;
    cin >> ret;
    return ret;
}
void ans(int x){    cout << "! " << x << endl;}
int solve(int l, int r) {
    // <= 2
    if(l == r) {
        return l;
    }
    int x = query(l, r);
    if(l + 1 == r) {
        return (l == x) ? r : l;
    }
    while(1) {
        if(l == r) {
            return l;
        }
        if(l + 1 == r) {
            return (l == x) ? r : l;
        }
        int len = D * (r - l + 1);
        if(r - len + 1 > x) {
            int y = query(l, r - len);
            if(y == x) {
                r = r - len;
            }
            else {
                return solve(r - len + 1, r);
            }
        }
        else {
            int y = query(l + len, r);
            if(y == x) {
                l = l + len;
            }
            else {
                return solve(l, l + len - 1);
            }
        }
    }
    
}
void work(){
    cin >> n; 
    int pos = solve(1, n);
    ans(pos);
}


int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> T;
    while(T--){
        work();
    }    
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3700kb

input:

3
5
3
3
2
6
6
3
1
4
3
2

output:

? 1 5
? 1 4
? 1 3
! 4
? 1 6
? 3 6
? 1 2
! 2
? 1 4
? 1 3
! 4

result:

ok Correct (3 test cases)

Test #2:

score: -100
Wrong Answer
time: 5ms
memory: 3704kb

input:

10000
10
2
2
2
2
3
10
10
10
10
7
10
5
5
1
6
10
4
4
4
4
4

output:

? 1 10
? 1 7
? 1 5
? 1 4
? 1 3
! 4
? 1 10
? 4 10
? 6 10
? 7 10
! 6
? 1 10
? 1 7
? 1 5
? 6 7
! 7
? 1 10
? 1 7
? 1 5
? 1 4
? 2 4
? 3 4

result:

wrong answer Too many queries , n = 10 , now_q 6 (test case 4)