Submission #75822199


Source Code Expand

#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
using ll = long long;

int n, k;
vector<tuple<int, int, int, int, int>> v;
int ntom[100007];
bool vst[100007];
bool out[100007];
int mx;

void f(int node, int curr, int ret) {
    if (ret >= n) return;
    vst[node] = 1;
    v.emplace_back(node, ret, ret + (1 << curr) - 1, node * 2, node * 2 + 1);
    if (!curr) return;
    f(node * 2, curr - 1, ret);
    f(node * 2 + 1, curr - 1, ret + (1 << curr));
}

int main() {
    cin.tie(0), ios_base::sync_with_stdio(0);

    cin >> n >> k;
    if (n == k) {
        cout << 2 * n - 1 << '\n';
        for (int i = 1; i < n - 1; i++) {
            cout << i << ' ' << n + 1 << ' ' << i << '\n';
        }
        cout << n - 1 << ' ' << n - 1 << ' ' << n << '\n';
        cout << "0 0 0\n0 0 0\n";
        for (int i = n + 1; i < 2 * n - 1; i++) {
            cout << 2 * n - 2 - i << ' ' << (i + 1 == 2 * n - 1 ? 0 : (i + 1))
                 << ' ' << 2 * n - 1 - i << '\n';
        }
        exit(0);
    }
    int bits = ceil(log2(n));
    int time = bits + 1;
    if (k < time) cout << -1, exit(0);
    int gap = k - time;
    f(1, bits - 1, 0);
    sort(all(v));
    int start = 0;
    vector<tuple<int, int, int, int>> fk;
    if (gap) {
        fk.emplace_back(0, 0, 0, n + 1);
        for (int i = n + 1; i < n + gap; i++) {
            fk.emplace_back(i, 0, 0, i + 1);
        }
        start = n + gap;
    }
    int idx = start;
    int idx2 = 1;
    for (auto& [n1, ret, f, n2, n3] : v) {
        if (idx2 < ret)
            ntom[n1] = idx2++;
        else {
            ntom[n1] = idx;
            if (!idx)
                idx = n + 1;
            else
                idx++;
        }
    }
    for (int i = idx2; i <= n; i++) fk.emplace_back(i, 0, 0, 0);
    for (auto& [n1, ret, f, n2, n3] : v) {
        int bt = 1 << bits;
        int x2 = (n2 >= bt ? n2 - bt + 1 : ntom[n2]);
        int x3 = (n3 >= bt ? n3 - bt + 1 : ntom[n3]);
        fk.emplace_back(ntom[n1], f + 1, x2, x3);
    }
    sort(all(fk));
    if (fk.size() > 2048) cout << -1, exit(0);
    cout << fk.size() << '\n';
    for (auto& [i, f, n2, n3] : fk)
        cout << min(f, n) << ' ' << n2 << ' ' << n3 << '\n';
}

Submission Info

Submission Time
Task L - ChannelTalk Workflow
User pluie
Language C++23 (GCC 15.2.0)
Score 100
Code Size 2311 Byte
Status AC
Exec Time 1 ms
Memory 3884 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 1
AC × 67
Set Name Test Cases
Sample 00-sample-001.txt
All 00-sample-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt, 01-034.txt, 01-035.txt, 01-036.txt, 01-037.txt, 01-038.txt, 01-039.txt, 01-040.txt, 01-041.txt, 01-042.txt, 01-043.txt, 01-044.txt, 01-045.txt, 01-046.txt, 01-047.txt, 01-048.txt, 01-049.txt, 01-050.txt, 01-051.txt, 01-052.txt, 01-053.txt, 01-054.txt, 01-055.txt, 01-056.txt, 01-057.txt, 01-058.txt, 01-059.txt, 01-060.txt, 01-061.txt, 01-062.txt, 01-063.txt, 01-064.txt, 01-065.txt, 01-066.txt, 01-067.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 1 ms 3412 KiB
01-002.txt AC 1 ms 3836 KiB
01-003.txt AC 1 ms 3668 KiB
01-004.txt AC 1 ms 3736 KiB
01-005.txt AC 1 ms 3756 KiB
01-006.txt AC 1 ms 3632 KiB
01-007.txt AC 1 ms 3792 KiB
01-008.txt AC 1 ms 3660 KiB
01-009.txt AC 1 ms 3884 KiB
01-010.txt AC 1 ms 3884 KiB
01-011.txt AC 1 ms 3840 KiB
01-012.txt AC 1 ms 3500 KiB
01-013.txt AC 1 ms 3840 KiB
01-014.txt AC 1 ms 3768 KiB
01-015.txt AC 1 ms 3820 KiB
01-016.txt AC 1 ms 3792 KiB
01-017.txt AC 1 ms 3820 KiB
01-018.txt AC 1 ms 3764 KiB
01-019.txt AC 1 ms 3744 KiB
01-020.txt AC 1 ms 3632 KiB
01-021.txt AC 1 ms 3768 KiB
01-022.txt AC 1 ms 3688 KiB
01-023.txt AC 1 ms 3688 KiB
01-024.txt AC 1 ms 3624 KiB
01-025.txt AC 1 ms 3656 KiB
01-026.txt AC 1 ms 3536 KiB
01-027.txt AC 1 ms 3636 KiB
01-028.txt AC 1 ms 3636 KiB
01-029.txt AC 1 ms 3500 KiB
01-030.txt AC 1 ms 3536 KiB
01-031.txt AC 1 ms 3688 KiB
01-032.txt AC 1 ms 3412 KiB
01-033.txt AC 1 ms 3364 KiB
01-034.txt AC 1 ms 3596 KiB
01-035.txt AC 1 ms 3576 KiB
01-036.txt AC 1 ms 3712 KiB
01-037.txt AC 1 ms 3492 KiB
01-038.txt AC 1 ms 3540 KiB
01-039.txt AC 1 ms 3348 KiB
01-040.txt AC 1 ms 3624 KiB
01-041.txt AC 1 ms 3596 KiB
01-042.txt AC 1 ms 3756 KiB
01-043.txt AC 1 ms 3504 KiB
01-044.txt AC 1 ms 3576 KiB
01-045.txt AC 1 ms 3480 KiB
01-046.txt AC 1 ms 3712 KiB
01-047.txt AC 1 ms 3520 KiB
01-048.txt AC 1 ms 3528 KiB
01-049.txt AC 1 ms 3504 KiB
01-050.txt AC 1 ms 3636 KiB
01-051.txt AC 1 ms 3500 KiB
01-052.txt AC 1 ms 3540 KiB
01-053.txt AC 1 ms 3520 KiB
01-054.txt AC 1 ms 3752 KiB
01-055.txt AC 1 ms 3356 KiB
01-056.txt AC 1 ms 3752 KiB
01-057.txt AC 1 ms 3460 KiB
01-058.txt AC 1 ms 3820 KiB
01-059.txt AC 1 ms 3520 KiB
01-060.txt AC 1 ms 3836 KiB
01-061.txt AC 1 ms 3348 KiB
01-062.txt AC 1 ms 3656 KiB
01-063.txt AC 1 ms 3480 KiB
01-064.txt AC 1 ms 3820 KiB
01-065.txt AC 1 ms 3596 KiB
01-066.txt AC 1 ms 3716 KiB
01-067.txt AC 1 ms 3484 KiB