54002023-05-12 15:52:41szilSzéfnyitáscpp14Hibás válasz 0/1007ms5904 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++) {
        if (s2[i][0] == 0) s2[i][0] = s2[i][1];
        if (s2[i][1] == 0) s2[i][1] = s2[i][0];
        if (s2[i][0] == 0) {
            s2[i][0] = s2[i][1] = 1;
        }
        cout << 0 << " " << s2[i][0] << " " << s2[i][1] << "\n";
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz3ms1960 KiB
2Hibás válasz3ms2232 KiB
subtask20/16
3Hibás válasz3ms2232 KiB
4Hibás válasz3ms2080 KiB
5Elfogadva3ms2268 KiB
6Elfogadva3ms2496 KiB
7Elfogadva3ms2572 KiB
8Hibás válasz3ms2788 KiB
9Hibás válasz3ms3012 KiB
10Elfogadva3ms2992 KiB
11Elfogadva3ms3120 KiB
12Hibás válasz3ms3160 KiB
13Elfogadva3ms3296 KiB
14Elfogadva3ms3376 KiB
subtask30/24
15Elfogadva3ms3376 KiB
16Hibás válasz3ms3384 KiB
17Elfogadva3ms3748 KiB
18Elfogadva3ms3868 KiB
19Elfogadva3ms3800 KiB
20Elfogadva3ms3924 KiB
21Elfogadva3ms3884 KiB
22Hibás válasz3ms3948 KiB
23Hibás válasz3ms4080 KiB
subtask40/23
24Hibás válasz3ms4080 KiB
25Hibás válasz3ms4116 KiB
26Elfogadva3ms4120 KiB
27Hibás válasz3ms4128 KiB
28Elfogadva3ms4028 KiB
29Elfogadva3ms4032 KiB
30Elfogadva3ms4092 KiB
31Elfogadva3ms4084 KiB
32Elfogadva3ms4096 KiB
subtask50/37
33Elfogadva3ms4096 KiB
34Hibás válasz3ms2080 KiB
35Elfogadva3ms2268 KiB
36Elfogadva3ms2496 KiB
37Elfogadva3ms2572 KiB
38Hibás válasz3ms2788 KiB
39Hibás válasz3ms3012 KiB
40Elfogadva3ms2992 KiB
41Elfogadva3ms3120 KiB
42Hibás válasz3ms3160 KiB
43Elfogadva3ms3296 KiB
44Elfogadva3ms3376 KiB
45Hibás válasz3ms3384 KiB
46Elfogadva3ms3748 KiB
47Elfogadva3ms3868 KiB
48Elfogadva3ms3800 KiB
49Elfogadva3ms3924 KiB
50Elfogadva3ms3884 KiB
51Hibás válasz3ms3948 KiB
52Hibás válasz3ms4080 KiB
53Hibás válasz3ms4116 KiB
54Elfogadva3ms4120 KiB
55Hibás válasz3ms4128 KiB
56Elfogadva3ms4028 KiB
57Elfogadva3ms4032 KiB
58Elfogadva3ms4092 KiB
59Elfogadva3ms4084 KiB
60Elfogadva3ms4096 KiB
61Hibás válasz3ms4040 KiB
62Hibás válasz3ms4068 KiB
63Hibás válasz3ms4336 KiB
64Hibás válasz3ms4296 KiB
65Hibás válasz7ms5336 KiB
66Elfogadva7ms5384 KiB
67Hibás válasz7ms5280 KiB
68Hibás válasz7ms5424 KiB
69Hibás válasz7ms5568 KiB
70Hibás válasz7ms5596 KiB
71Elfogadva7ms5836 KiB
72Elfogadva6ms5904 KiB