164642025-05-02 10:33:27szilKutyák és macskákcpp17Partially correct 91.37/100759ms756 KiB
#include "KutyakMacskak.h"
#include <bits/stdc++.h>

using namespace std;

void merge_sort(vector<int> &arr, const function<bool(int,int)> &func) {
    if (arr.size() > 1) {
        vector<int> arr1(arr.begin(), arr.begin()+arr.size()/2);
        vector<int> arr2(arr.begin()+arr.size()/2, arr.end());
        merge_sort(arr1, func);
        merge_sort(arr2, func);

        vector<int> res;
        merge(arr1.begin(), arr1.end(), arr2.begin(), arr2.end(), back_inserter(res), func);
        arr = res;
    }
}

std::vector<int> find_order(int N, int M) {
    swap(N, M);
    int best = 1;
    for (int i = 2; i <= N; i++) {
        if (ask(1, best, i) == best) best = i;
    }
    int ptr = 1, kutya = -1;
    for (int i = 1; i <= M; i++) {
        for (; ptr <= N; ptr++) {
            if (ptr == best) continue;
            if (ask(i, ptr, best) == ptr) {
                break;
            }
        }
        if (ptr > N) {
            kutya = i;
            break;
        }
    }
    vector<int> ord(N);
    iota(ord.begin(), ord.end(), 1);

    merge_sort(ord, [&](int a, int b){
        return ask(kutya, a, b) == a;
    });

    return ord;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted671ms564 KiB
subtask26/6
3Accepted639ms568 KiB
4Accepted639ms664 KiB
5Accepted691ms564 KiB
6Accepted707ms420 KiB
7Accepted661ms564 KiB
subtask37/7
8Accepted2ms316 KiB
9Accepted2ms316 KiB
10Accepted2ms508 KiB
11Accepted2ms564 KiB
12Accepted2ms316 KiB
13Accepted24ms316 KiB
14Accepted35ms316 KiB
subtask410/10
15Accepted8ms316 KiB
16Accepted7ms316 KiB
17Accepted7ms316 KiB
18Accepted7ms316 KiB
19Accepted8ms512 KiB
20Accepted7ms316 KiB
21Accepted7ms508 KiB
22Accepted7ms316 KiB
23Accepted8ms316 KiB
24Accepted8ms316 KiB
25Accepted8ms316 KiB
26Accepted8ms508 KiB
27Accepted8ms316 KiB
28Accepted7ms316 KiB
29Accepted8ms316 KiB
subtask512/12
30Accepted8ms316 KiB
31Accepted7ms316 KiB
32Accepted7ms316 KiB
33Accepted7ms316 KiB
34Accepted8ms512 KiB
35Accepted7ms316 KiB
36Accepted7ms508 KiB
37Accepted7ms316 KiB
38Accepted8ms316 KiB
39Accepted8ms316 KiB
40Accepted8ms316 KiB
41Accepted8ms508 KiB
42Accepted8ms316 KiB
43Accepted7ms316 KiB
44Accepted8ms316 KiB
45Accepted37ms316 KiB
46Accepted37ms316 KiB
47Accepted37ms316 KiB
48Accepted39ms316 KiB
49Accepted37ms316 KiB
50Accepted35ms316 KiB
51Accepted35ms316 KiB
52Accepted37ms316 KiB
53Accepted35ms316 KiB
54Accepted37ms316 KiB
55Accepted35ms508 KiB
56Accepted35ms316 KiB
57Accepted35ms316 KiB
58Accepted37ms316 KiB
59Accepted39ms500 KiB
subtask656.37/65
60Accepted1ms512 KiB
61Accepted685ms564 KiB
62Accepted639ms568 KiB
63Accepted639ms664 KiB
64Accepted691ms564 KiB
65Accepted707ms420 KiB
66Accepted661ms564 KiB
67Accepted2ms316 KiB
68Accepted2ms316 KiB
69Accepted2ms508 KiB
70Accepted2ms564 KiB
71Accepted2ms316 KiB
72Accepted24ms316 KiB
73Accepted35ms316 KiB
74Accepted8ms316 KiB
75Accepted7ms316 KiB
76Accepted7ms316 KiB
77Accepted7ms316 KiB
78Accepted8ms512 KiB
79Accepted7ms316 KiB
80Accepted7ms508 KiB
81Accepted7ms316 KiB
82Accepted8ms316 KiB
83Accepted8ms316 KiB
84Accepted8ms316 KiB
85Accepted8ms508 KiB
86Accepted8ms316 KiB
87Accepted7ms316 KiB
88Accepted8ms316 KiB
89Accepted37ms316 KiB
90Accepted37ms316 KiB
91Accepted37ms316 KiB
92Accepted39ms316 KiB
93Accepted37ms316 KiB
94Accepted35ms316 KiB
95Accepted35ms316 KiB
96Accepted37ms316 KiB
97Accepted35ms316 KiB
98Accepted37ms316 KiB
99Accepted35ms508 KiB
100Accepted35ms316 KiB
101Accepted35ms316 KiB
102Accepted37ms316 KiB
103Accepted39ms500 KiB
104Partially correct708ms568 KiB
105Partially correct670ms416 KiB
106Partially correct639ms564 KiB
107Partially correct686ms564 KiB
108Partially correct669ms508 KiB
109Partially correct680ms508 KiB
110Partially correct665ms420 KiB
111Accepted676ms672 KiB
112Accepted667ms564 KiB
113Accepted660ms584 KiB
114Partially correct679ms568 KiB
115Partially correct666ms564 KiB
116Partially correct691ms668 KiB
117Partially correct694ms564 KiB
118Partially correct672ms756 KiB
119Partially correct689ms424 KiB
120Partially correct759ms564 KiB
121Partially correct759ms416 KiB
122Partially correct661ms420 KiB
123Partially correct677ms564 KiB
124Partially correct680ms564 KiB
125Partially correct684ms420 KiB
126Partially correct718ms404 KiB
127Partially correct730ms420 KiB
128Partially correct731ms564 KiB
129Partially correct745ms572 KiB
130Partially correct656ms412 KiB
131Partially correct679ms672 KiB
132Partially correct702ms568 KiB