QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#886417#9734. Identify Chord0x3fWA 1ms3584kbC++141.6kb2025-02-07 02:37:232025-02-07 02:37:24

Judging History

This is the latest submission verdict.

  • [2025-02-07 02:37:24]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3584kb
  • [2025-02-07 02:37:23]
  • Submitted

answer

#include <bits/stdc++.h>
#define ll long long

using namespace std;
ll n;
map<pair<int, int>, int> mp;

ll qry(int u, int v, bool flip) {
    if(flip) u = n - u % n, v = n - v % n;
    u = (u - 1) % n + 1, v = (v - 1) % n + 1;
    if(mp.count({u, v})) return mp[{u, v}];
    cout << "? " << u << " " << v << endl;
    ll ret; cin >> ret; mp[{u, v}] = ret;
    return ret;
}

void slv() {
    mp.clear(), cin >> n;
    ll mid = n / 2, u = 1, v = mid + 1, cur = 0;
    bool flip = false;
    while((cur = qry(u, v, flip)) == mid) 
        if(n & 1) {
            if(u + mid < v) u++;
            else v++;
        } else if(n % 2 == 0) u++, v++;
    if(qry(u, v + 1, flip) == cur - 1) {
        flip = true;
        u = n - u;
        v = 2 * n - v;
    }
    ll l = u, r = v;
    while(l <= r) {
        ll t = (l + r) >> 1;
        if(qry(u, t, flip) == cur - v + t) r = t - 1;
        else l = t + 1; 
    }
    cur -= v - l + 1;
    if(qry(n + u - cur, l, flip) == 1) {
        ll ansu = n + u - cur, ansv = l;
        if(flip) ansu = n - u % n, ansv = n - v % n;
        ansu = (ansu - 1) % n + 1, ansv = (ansv - 1) % n + 1;
        cout << "! " << ansu << " " << ansv << endl;
        ll ret; cin >> ret;
    } else {
        ll ansu = u + cur, ansv = l;
        if(flip) ansu = n - u % n, ansv = n - v % n;
        ansu = (ansu - 1) % n + 1, ansv = (ansv - 1) % n + 1;
        cout << "! " << ansu << " " << ansv << endl;
        ll ret; cin >> ret;
    }
    return ;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int tc; cin >> tc;
    while(tc --) slv();
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3584kb

input:

2
6
2
2
1
2
2
1
4
1
1
1
1

output:

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

result:

ok ok (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 3584kb

input:

1000
15
5
6
3
5
6
4
1
19
5
4
5
3
5
4
1
-1

output:

? 1 8
? 1 9
? 1 4
? 1 6
? 1 7
? 12 8
! 5 8
? 1 10
? 1 11
? 1 15
? 1 12
? 1 14
? 1 13
? 3 12
! 1 10

result:

wrong answer Wrong answer n=19, actual=3-12, guessed=1-10 (test case 2)