164642025-05-02 10:33:27szilKutyák és macskákcpp17Részben helyes 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva671ms564 KiB
subtask26/6
3Elfogadva639ms568 KiB
4Elfogadva639ms664 KiB
5Elfogadva691ms564 KiB
6Elfogadva707ms420 KiB
7Elfogadva661ms564 KiB
subtask37/7
8Elfogadva2ms316 KiB
9Elfogadva2ms316 KiB
10Elfogadva2ms508 KiB
11Elfogadva2ms564 KiB
12Elfogadva2ms316 KiB
13Elfogadva24ms316 KiB
14Elfogadva35ms316 KiB
subtask410/10
15Elfogadva8ms316 KiB
16Elfogadva7ms316 KiB
17Elfogadva7ms316 KiB
18Elfogadva7ms316 KiB
19Elfogadva8ms512 KiB
20Elfogadva7ms316 KiB
21Elfogadva7ms508 KiB
22Elfogadva7ms316 KiB
23Elfogadva8ms316 KiB
24Elfogadva8ms316 KiB
25Elfogadva8ms316 KiB
26Elfogadva8ms508 KiB
27Elfogadva8ms316 KiB
28Elfogadva7ms316 KiB
29Elfogadva8ms316 KiB
subtask512/12
30Elfogadva8ms316 KiB
31Elfogadva7ms316 KiB
32Elfogadva7ms316 KiB
33Elfogadva7ms316 KiB
34Elfogadva8ms512 KiB
35Elfogadva7ms316 KiB
36Elfogadva7ms508 KiB
37Elfogadva7ms316 KiB
38Elfogadva8ms316 KiB
39Elfogadva8ms316 KiB
40Elfogadva8ms316 KiB
41Elfogadva8ms508 KiB
42Elfogadva8ms316 KiB
43Elfogadva7ms316 KiB
44Elfogadva8ms316 KiB
45Elfogadva37ms316 KiB
46Elfogadva37ms316 KiB
47Elfogadva37ms316 KiB
48Elfogadva39ms316 KiB
49Elfogadva37ms316 KiB
50Elfogadva35ms316 KiB
51Elfogadva35ms316 KiB
52Elfogadva37ms316 KiB
53Elfogadva35ms316 KiB
54Elfogadva37ms316 KiB
55Elfogadva35ms508 KiB
56Elfogadva35ms316 KiB
57Elfogadva35ms316 KiB
58Elfogadva37ms316 KiB
59Elfogadva39ms500 KiB
subtask656.37/65
60Elfogadva1ms512 KiB
61Elfogadva685ms564 KiB
62Elfogadva639ms568 KiB
63Elfogadva639ms664 KiB
64Elfogadva691ms564 KiB
65Elfogadva707ms420 KiB
66Elfogadva661ms564 KiB
67Elfogadva2ms316 KiB
68Elfogadva2ms316 KiB
69Elfogadva2ms508 KiB
70Elfogadva2ms564 KiB
71Elfogadva2ms316 KiB
72Elfogadva24ms316 KiB
73Elfogadva35ms316 KiB
74Elfogadva8ms316 KiB
75Elfogadva7ms316 KiB
76Elfogadva7ms316 KiB
77Elfogadva7ms316 KiB
78Elfogadva8ms512 KiB
79Elfogadva7ms316 KiB
80Elfogadva7ms508 KiB
81Elfogadva7ms316 KiB
82Elfogadva8ms316 KiB
83Elfogadva8ms316 KiB
84Elfogadva8ms316 KiB
85Elfogadva8ms508 KiB
86Elfogadva8ms316 KiB
87Elfogadva7ms316 KiB
88Elfogadva8ms316 KiB
89Elfogadva37ms316 KiB
90Elfogadva37ms316 KiB
91Elfogadva37ms316 KiB
92Elfogadva39ms316 KiB
93Elfogadva37ms316 KiB
94Elfogadva35ms316 KiB
95Elfogadva35ms316 KiB
96Elfogadva37ms316 KiB
97Elfogadva35ms316 KiB
98Elfogadva37ms316 KiB
99Elfogadva35ms508 KiB
100Elfogadva35ms316 KiB
101Elfogadva35ms316 KiB
102Elfogadva37ms316 KiB
103Elfogadva39ms500 KiB
104Részben helyes708ms568 KiB
105Részben helyes670ms416 KiB
106Részben helyes639ms564 KiB
107Részben helyes686ms564 KiB
108Részben helyes669ms508 KiB
109Részben helyes680ms508 KiB
110Részben helyes665ms420 KiB
111Elfogadva676ms672 KiB
112Elfogadva667ms564 KiB
113Elfogadva660ms584 KiB
114Részben helyes679ms568 KiB
115Részben helyes666ms564 KiB
116Részben helyes691ms668 KiB
117Részben helyes694ms564 KiB
118Részben helyes672ms756 KiB
119Részben helyes689ms424 KiB
120Részben helyes759ms564 KiB
121Részben helyes759ms416 KiB
122Részben helyes661ms420 KiB
123Részben helyes677ms564 KiB
124Részben helyes680ms564 KiB
125Részben helyes684ms420 KiB
126Részben helyes718ms404 KiB
127Részben helyes730ms420 KiB
128Részben helyes731ms564 KiB
129Részben helyes745ms572 KiB
130Részben helyes656ms412 KiB
131Részben helyes679ms672 KiB
132Részben helyes702ms568 KiB