QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#210095#6303. InversiontherehelloWA 33ms18656kbC++201.3kb2023-10-11 01:18:182023-10-11 01:18:18

Judging History

你现在查看的是最新测评结果

  • [2023-10-11 01:18:18]
  • 评测
  • 测评结果:WA
  • 用时:33ms
  • 内存:18656kb
  • [2023-10-11 01:18:18]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

void solve() {
    int n;
    cin >> n;

    vector _f(n + 1, vector<int>(n + 1, -1));
    int cnt = 0;
    auto f = [&](int l, int r) {
        if (l >= r) return 0;
        if (_f[l][r] != -1) return _f[l][r];
        cnt++;
        assert(cnt <= 40000);
        cout << "? " << l << " " << r << endl;
        int x;
        cin >> x;
        return _f[l][r] = x;
    };

    vector<int> a{1}, p(n + 1);
    for (int i = 2; i <= n; i++) {
        auto pos = lower_bound(a.begin(), a.end(), i, [&](int l, int r) {
            int x = f(l, r) - f(l + 1, r) - f(l, r - 1) + f(l + 1, r - 1);
            x = (x % 2 + 2) % 2;
            return !x;
        });
        a.insert(pos, i);
        for (int j = 0; j < a.size(); j++) p[a[j]] = j + 1;
        for (int l = i - 1, v = 0; l >= 1; l--) {
            if (p[l] > p[i]) v++;
            _f[l][i] = v;
        }
    }

    cout << "! ";
    for (int i = 1; i <= n; i++) cout << p[i] << " ";
    cout << endl;
}

int main() {
    ios::sync_with_stdio(false);
    int t = 1;
    // cin >> t;
    while (t--) solve();
#ifdef DEBUG
    cout << "\n----------------\n";
    cout << fixed << setprecision(6);
    cout << "Times: " << 1.0 * clock() / CLOCKS_PER_SEC << "s\n";
#endif
}

詳細信息

Test #1:

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

input:

3
0
1
0

output:

? 1 2
? 2 3
? 1 3
! 2 3 1 

result:

ok OK, guesses=3

Test #2:

score: -100
Wrong Answer
time: 33ms
memory: 18656kb

input:

1993
0
0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
1
0
1
0
0
1
1
0
1
0
1
1
1
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
1
1
1
0
1
0
1
1
1
1
0
0
0
0
1
0
0
0
0
0
1
0
1
0
0
0
1
1
1
1
1
1
0
0
1
1
1
0
0
0
0
0
0
0
1
0
1
1
0
1
0
1
1
0
0
1
1
0
0
1
0
1
0
1
1
0
0
0
1
0
1
1
0
1
1
1
1
1
0
1
1
1
1
0
1
0
1
0
0
1...

output:

? 1 2
? 2 3
? 2 4
? 3 4
? 3 5
? 4 5
? 2 5
? 1 5
? 2 6
? 3 6
? 1 6
? 5 6
? 2 7
? 3 7
? 4 7
? 5 7
? 2 8
? 3 8
? 6 8
? 7 8
? 5 8
? 2 9
? 3 9
? 6 9
? 7 9
? 1 9
? 9 10
? 6 10
? 7 10
? 1 10
? 2 10
? 9 11
? 10 11
? 6 11
? 7 11
? 11 12
? 3 12
? 4 12
? 2 12
? 9 12
? 10 12
? 12 13
? 3 13
? 4 13
? 2 13
? 9 13
...

result:

wrong answer Wa.