53982023-05-12 15:50:38szilSzéfnyitáscpp14Hibás válasz 0/1007ms6016 KiB
#include <bits/stdc++.h>

using ll = long long;
using namespace std;
const ll INF = 1e18;

const int MAXN = 151;

int a[MAXN];
int s[MAXN][2], s2[50001][2];

int timer;
struct Node {
    Node *p[2] = {nullptr, nullptr};
    int u = -1, t;
};

Node *root;

void add(vector<int> &v, int u) {
    Node *ptr = root;
    for (int i : v) {
        if (ptr->p[i] == nullptr) {
            ptr->p[i] = new Node();
            ptr->p[i]->t = timer++;
        }
        ptr = ptr->p[i];
    }
    ptr->u = u;
}

void upd(Node *v) {
    if (v->u != -1) {
        s2[v->t][0] = s2[v->t][1] = v->u;
        return;
    }
    if (v->p[0] != nullptr) {
        s2[v->t][0] = v->p[0]->t;
        upd(v->p[0]);
    }
    if (v->p[1] != nullptr) {
        s2[v->t][1] = v->p[1]->t;
        upd(v->p[1]);
    }
}

int main()
{
    srand(time(0));
    ios::sync_with_stdio(0); cin.tie(0);
    int n, k; cin >> n;
    timer = n + 1;
    root = new Node();
    root->t = timer++;
    for (int i = 1; i <= n; i++) {
        int x;
        cin >> a[i] >> s[i][0] >> s[i][1];
    }
    cin >> k;

    for (int i = 1; i <= n; i++) {
        vector<int> v;
        int u = i;
        for (int it = 0; it < n-1; it++) {
            v.push_back(a[u]);
            u = s[u][0];
        }
        add(v, s[u][0]);
    }
    upd(root);
    cout << timer-1 << " " << n+1 << "\n";
    for (int i = 1; i <= n; i++) {
        cout << a[i] << " " << s[i][0] << " " << s[i][1] << "\n";
    }
    for (int i = n+1; i < timer; i++) {
        cout << 0 << " " << s2[i][0] << " " << s2[i][1] << "\n";
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1832 KiB
2Hibás válasz3ms2028 KiB
subtask20/16
3Hibás válasz3ms2028 KiB
4Hibás válasz3ms2244 KiB
5Hibás válasz3ms2452 KiB
6Elfogadva2ms2664 KiB
7Elfogadva2ms2872 KiB
8Hibás válasz2ms2956 KiB
9Hibás válasz3ms3104 KiB
10Elfogadva2ms3028 KiB
11Elfogadva3ms3160 KiB
12Hibás válasz2ms3248 KiB
13Elfogadva3ms3476 KiB
14Elfogadva3ms3560 KiB
subtask30/24
15Elfogadva3ms3560 KiB
16Hibás válasz3ms3920 KiB
17Hibás válasz3ms3796 KiB
18Hibás válasz3ms3712 KiB
19Hibás válasz3ms3712 KiB
20Hibás válasz3ms3764 KiB
21Hibás válasz3ms3708 KiB
22Hibás válasz3ms3764 KiB
23Hibás válasz3ms3708 KiB
subtask40/23
24Hibás válasz3ms3708 KiB
25Hibás válasz3ms3688 KiB
26Hibás válasz3ms3692 KiB
27Hibás válasz3ms3828 KiB
28Hibás válasz3ms3940 KiB
29Hibás válasz3ms4104 KiB
30Hibás válasz3ms4064 KiB
31Hibás válasz3ms4112 KiB
32Hibás válasz3ms4376 KiB
subtask50/37
33Hibás válasz3ms4376 KiB
34Hibás válasz3ms2244 KiB
35Hibás válasz3ms2452 KiB
36Elfogadva2ms2664 KiB
37Elfogadva2ms2872 KiB
38Hibás válasz2ms2956 KiB
39Hibás válasz3ms3104 KiB
40Elfogadva2ms3028 KiB
41Elfogadva3ms3160 KiB
42Hibás válasz2ms3248 KiB
43Elfogadva3ms3476 KiB
44Elfogadva3ms3560 KiB
45Hibás válasz3ms3920 KiB
46Hibás válasz3ms3796 KiB
47Hibás válasz3ms3712 KiB
48Hibás válasz3ms3712 KiB
49Hibás válasz3ms3764 KiB
50Hibás válasz3ms3708 KiB
51Hibás válasz3ms3764 KiB
52Hibás válasz3ms3708 KiB
53Hibás válasz3ms3688 KiB
54Hibás válasz3ms3692 KiB
55Hibás válasz3ms3828 KiB
56Hibás válasz3ms3940 KiB
57Hibás válasz3ms4104 KiB
58Hibás válasz3ms4064 KiB
59Hibás válasz3ms4112 KiB
60Hibás válasz3ms4376 KiB
61Hibás válasz3ms4280 KiB
62Hibás válasz3ms4356 KiB
63Hibás válasz3ms4316 KiB
64Hibás válasz3ms4316 KiB
65Hibás válasz6ms5372 KiB
66Hibás válasz7ms5516 KiB
67Hibás válasz7ms5512 KiB
68Hibás válasz6ms5456 KiB
69Hibás válasz7ms5608 KiB
70Hibás válasz7ms5896 KiB
71Hibás válasz7ms6016 KiB
72Hibás válasz6ms5732 KiB