답안 #913102

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
913102 2024-01-20T05:59:13 Z vjudge1 Mouse (info1cup19_mouse) C++17
48 / 100
97 ms 500 KB
#include <bits/stdc++.h>

#include "grader.h"
using namespace std;
int n;

int ask(const vector<int> &q) {
        int x = query(q);
        if (x == n) {
                exit(0);
        }
        return x;
}

mt19937 rng(123123);

void solve(int n) {
        ::n = n;
        vector<int> a(n);
        iota(a.begin(), a.end(), 1);
        do {
                shuffle(a.begin(), a.end(), rng);
        } while (ask(a));
        int cur = 0;
        vector<int> done(n);
        for (int i = 0; i < n; i++) {
                if (done[i]) continue;
                vector<int> ord;
                for (int j = i + 1; j < n; j++) {
                        if (!done[j]) ord.emplace_back(j);
                }
                shuffle(ord.begin(), ord.end(), rng);
                bool might_done = 0;
                int last_done = -1;
                for (int j : ord) {
                        swap(a[i], a[j]);
                        int tmp = ask(a);
                        if (tmp - cur == 2) {
                                done[j] = 1;
                                cur = tmp;
                                break;
                        } else if (tmp - cur == 1) {
                                cur = tmp;
                                // a[i] = j || a[j] = i
                                if (might_done) done[last_done] = 1;
                                might_done = 1;
                                last_done = j;
                        } else if (tmp == cur) {
                                // a[i] != j && a[i] != i && a[j] != i && a[j] != j
                                if (might_done) done[last_done] = 1;
                                might_done = 0;
                                swap(a[i], a[j]);
                        } else if (tmp - cur == -1) {  // tmp < cur
                                // a[i] = i || a[j] = j
                                swap(a[i], a[j]);
                                if (might_done == 0) {
                                        done[j] = 1;
                                } else {
                                        break;
                                }
                        } else {
                                done[j] = 1;
                                swap(a[i], a[j]);
                                break;
                        }
                }
        }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 500 KB Correct! Number of queries: 13
2 Correct 1 ms 344 KB Correct! Number of queries: 6
3 Correct 1 ms 344 KB Correct! Number of queries: 10
4 Correct 1 ms 500 KB Correct! Number of queries: 11
5 Correct 1 ms 344 KB Correct! Number of queries: 10
6 Correct 1 ms 344 KB Correct! Number of queries: 12
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 500 KB Correct! Number of queries: 13
2 Correct 1 ms 344 KB Correct! Number of queries: 6
3 Correct 1 ms 344 KB Correct! Number of queries: 10
4 Correct 1 ms 500 KB Correct! Number of queries: 11
5 Correct 1 ms 344 KB Correct! Number of queries: 10
6 Correct 1 ms 344 KB Correct! Number of queries: 12
7 Correct 4 ms 344 KB Correct! Number of queries: 500
8 Correct 4 ms 344 KB Correct! Number of queries: 400
9 Correct 3 ms 344 KB Correct! Number of queries: 400
10 Correct 3 ms 344 KB Correct! Number of queries: 400
11 Correct 3 ms 344 KB Correct! Number of queries: 400
12 Correct 4 ms 344 KB Correct! Number of queries: 500
13 Correct 4 ms 344 KB Correct! Number of queries: 400
14 Correct 4 ms 344 KB Correct! Number of queries: 400
15 Correct 4 ms 344 KB Correct! Number of queries: 400
16 Correct 3 ms 344 KB Correct! Number of queries: 400
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 500 KB Correct! Number of queries: 13
2 Correct 1 ms 344 KB Correct! Number of queries: 6
3 Correct 1 ms 344 KB Correct! Number of queries: 10
4 Correct 1 ms 500 KB Correct! Number of queries: 11
5 Correct 1 ms 344 KB Correct! Number of queries: 10
6 Correct 1 ms 344 KB Correct! Number of queries: 12
7 Correct 4 ms 344 KB Correct! Number of queries: 500
8 Correct 4 ms 344 KB Correct! Number of queries: 400
9 Correct 3 ms 344 KB Correct! Number of queries: 400
10 Correct 3 ms 344 KB Correct! Number of queries: 400
11 Correct 3 ms 344 KB Correct! Number of queries: 400
12 Correct 4 ms 344 KB Correct! Number of queries: 500
13 Correct 4 ms 344 KB Correct! Number of queries: 400
14 Correct 4 ms 344 KB Correct! Number of queries: 400
15 Correct 4 ms 344 KB Correct! Number of queries: 400
16 Correct 3 ms 344 KB Correct! Number of queries: 400
17 Runtime error 97 ms 436 KB Execution killed with signal 13
18 Halted 0 ms 0 KB -