QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#761513#9519. Build a ComputerClarusAC ✓0ms3668kbC++202.1kb2024-11-19 00:02:522024-11-19 00:02:54

Judging History

This is the latest submission verdict.

  • [2024-11-19 00:02:54]
  • Judged
  • Verdict: AC
  • Time: 0ms
  • Memory: 3668kb
  • [2024-11-19 00:02:52]
  • Submitted

answer

#include <bits/stdc++.h>

using LL = long long;

constexpr int inf = 1E9;

std::vector<std::array<int, 2>> node(1);
std::vector<int> t[101];
std::vector<std::pair<int ,int>> ans[101], tmp;

int new_node()
{
    node.emplace_back();
    return node.size() - 1;
}

int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int l, r;
    std::cin >> l >> r;

    int x = l;
    while (x <= r)
    {
        int z = x & -x;
        while (x + z - 1 > r)
        {
            z >>= 1;
        }
        int y = x + z - 1;
        int i = 19, p = 0;
        while ((x >> i & 1) == 0) { i--; }
        while (i > 0 && (x >> i & 1) == (y >> i & 1))
        {
            int b = x >> i & 1;
            if (node[p][b] == 0)
            {
                node[p][b] = new_node();
            }
            p = node[p][b];
            i--;
        }
        if (i == 0 && (x & 1) == (y & 1))
        {
            tmp.emplace_back(p, x & 1);
        }
        else
        {
            t[p].emplace_back(i);
        }
        x += z;
    }

    int n = node.size();
    int m = 0;

    for (auto [p, i] : tmp)
    {
        ans[p].emplace_back(n, i);
    }

    auto dfs = [&](auto &&self, int p) -> void
    {
        for (int i = 0; i < 2; i++)
        {
            if (node[p][i])
            {
                ans[p].emplace_back(node[p][i], i);
                self(self, node[p][i]);
            }
        }
        for (auto s : t[p])
        {
            ans[p].emplace_back(s + n, 0);
            ans[p].emplace_back(s + n, 1);
            m = std::max(m, s);
        }
    };
    dfs(dfs, 0);
    for (int i = m; i > 0; i--)
    {
        ans[i + n].emplace_back(i + n - 1, 0);
        ans[i + n].emplace_back(i + n - 1, 1);
    }

    n += m + 1;
    std::cout << n << '\n';

    for (int i = 0; i < n; i++)
    {
        std::cout << ans[i].size();
        for (auto [x, y] : ans[i])
        {
            std::cout << ' ' << x + 1 << ' ' << y;
        }
        std::cout << '\n';
    }

    return 0;
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3616kb

input:

5 7

output:

5
1 2 1
2 3 0 4 1
1 5 1
2 5 0 5 1
0

result:

ok ok

Test #2:

score: 0
Accepted
time: 0ms
memory: 3616kb

input:

10 27

output:

9
1 2 1
2 3 0 5 1
3 4 1 9 0 9 1
2 7 0 7 1
3 6 0 8 0 8 1
2 8 0 8 1
0
2 7 0 7 1
2 8 0 8 1

result:

ok ok

Test #3:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

5 13

output:

7
1 2 1
2 3 0 4 1
3 6 1 7 0 7 1
3 5 0 6 0 6 1
2 6 0 6 1
0
2 6 0 6 1

result:

ok ok

Test #4:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

1 1000000

output:

44
2 27 1 2 1
38 3 0 4 1 27 0 27 1 28 0 28 1 29 0 29 1 30 0 30 1 31 0 31 1 32 0 32 1 33 0 33 1 34 0 34 1 35 0 35 1 36 0 36 1 37 0 37 1 38 0 38 1 39 0 39 1 40 0 40 1 41 0 41 1 42 0 42 1 43 0 43 1 44 0 44 1
2 44 0 44 1
2 5 0 6 1
2 43 0 43 1
2 7 0 8 1
2 42 0 42 1
1 9 0
2 10 0 11 1
2 40 0 40 1
1 12 0
1 ...

result:

ok ok

Test #5:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

1 1

output:

2
1 2 1
0

result:

ok ok

Test #6:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

7 9

output:

6
1 2 1
2 4 0 3 1
1 6 1
1 5 0
2 6 0 6 1
0

result:

ok ok

Test #7:

score: 0
Accepted
time: 0ms
memory: 3584kb

input:

3 7

output:

4
1 2 1
3 3 1 4 0 4 1
0
2 3 0 3 1

result:

ok ok

Test #8:

score: 0
Accepted
time: 0ms
memory: 3528kb

input:

1 5

output:

4
2 4 1 2 1
3 3 0 4 0 4 1
2 4 0 4 1
0

result:

ok ok

Test #9:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

1 4

output:

4
2 4 1 2 1
3 3 0 4 0 4 1
1 4 0
0

result:

ok ok

Test #10:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

8 9

output:

5
1 2 1
1 3 0
1 4 0
2 5 0 5 1
0

result:

ok ok

Test #11:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

7 51

output:

10
1 2 1
6 4 0 3 1 9 0 9 1 10 0 10 1
2 7 1 5 0
2 10 0 10 1
1 6 0
2 8 0 8 1
0
2 7 0 7 1
2 8 0 8 1
2 9 0 9 1

result:

ok ok

Test #12:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

51 79

output:

14
1 2 1
2 9 0 3 1
2 4 0 8 1
2 5 0 7 1
1 6 1
1 11 1
2 12 0 12 1
2 13 0 13 1
1 10 0
2 14 0 14 1
0
2 11 0 11 1
2 12 0 12 1
2 13 0 13 1

result:

ok ok

Test #13:

score: 0
Accepted
time: 0ms
memory: 3668kb

input:

92 99

output:

12
1 2 1
2 3 0 7 1
1 4 1
1 5 1
1 6 1
2 12 0 12 1
1 8 0
1 9 0
1 10 0
2 12 0 12 1
0
2 11 0 11 1

result:

ok ok

Test #14:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

27 36

output:

13
1 2 1
2 7 0 3 1
2 4 0 6 1
1 5 1
1 12 1
2 13 0 13 1
1 8 0
2 9 0 10 1
2 13 0 13 1
1 11 0
1 12 0
0
2 12 0 12 1

result:

ok ok

Test #15:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

55 84

output:

18
1 2 1
2 8 0 3 1
2 4 0 7 1
1 5 1
1 6 1
1 15 1
2 17 0 17 1
2 9 0 10 1
2 18 0 18 1
1 11 0
2 12 0 13 1
2 16 0 16 1
1 14 0
1 15 0
0
2 15 0 15 1
2 16 0 16 1
2 17 0 17 1

result:

ok ok

Test #16:

score: 0
Accepted
time: 0ms
memory: 3668kb

input:

297208 929600

output:

67
1 2 1
2 3 0 25 1
4 4 0 24 1 67 0 67 1
1 5 1
2 6 0 23 1
2 7 0 22 1
2 8 0 21 1
1 9 1
2 10 0 20 1
2 11 0 19 1
2 12 0 18 1
1 13 1
1 14 1
1 15 1
1 16 1
1 17 1
2 52 0 52 1
2 57 0 57 1
2 58 0 58 1
2 59 0 59 1
2 61 0 61 1
2 62 0 62 1
2 63 0 63 1
2 65 0 65 1
4 26 0 27 1 66 0 66 1
2 66 0 66 1
1 28 0
1 29 0...

result:

ok ok

Test #17:

score: 0
Accepted
time: 0ms
memory: 3536kb

input:

45728 589156

output:

62
1 2 1
8 3 0 17 1 60 0 60 1 61 0 61 1 62 0 62 1
2 18 0 4 1
1 5 1
2 6 0 16 1
2 7 0 15 1
1 8 1
2 9 0 14 1
1 10 1
2 11 0 13 1
1 12 1
2 49 0 49 1
2 50 0 50 1
2 52 0 52 1
2 54 0 54 1
2 55 0 55 1
2 58 0 58 1
1 19 0
2 20 0 21 1
2 59 0 59 1
2 22 0 23 1
2 58 0 58 1
2 24 0 25 1
2 57 0 57 1
2 26 0 27 1
2 56 ...

result:

ok ok

Test #18:

score: 0
Accepted
time: 0ms
memory: 3532kb

input:

129152 138000

output:

47
1 2 1
2 15 0 3 1
1 4 1
1 5 1
1 6 1
1 7 1
2 8 0 14 1
2 9 0 13 1
2 10 0 12 1
1 11 1
2 42 0 42 1
2 43 0 43 1
2 44 0 44 1
2 45 0 45 1
1 16 0
1 17 0
1 18 0
2 19 0 20 1
2 47 0 47 1
2 21 0 22 1
2 46 0 46 1
1 23 0
2 24 0 25 1
2 44 0 44 1
2 26 0 27 1
2 43 0 43 1
1 28 0
1 29 0
1 30 0
2 31 0 32 1
2 39 0 39 ...

result:

ok ok

Test #19:

score: 0
Accepted
time: 0ms
memory: 3596kb

input:

245280 654141

output:

66
1 2 1
4 19 0 3 1 66 0 66 1
1 4 1
2 5 0 18 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
2 11 0 17 1
2 12 0 16 1
2 13 0 15 1
1 14 1
2 53 0 53 1
2 54 0 54 1
2 55 0 55 1
2 56 0 56 1
2 62 0 62 1
1 20 0
2 21 0 22 1
2 64 0 64 1
2 23 0 24 1
2 63 0 63 1
2 25 0 26 1
2 62 0 62 1
2 27 0 28 1
2 61 0 61 1
2 29 0 30 1
2 60...

result:

ok ok

Test #20:

score: 0
Accepted
time: 0ms
memory: 3616kb

input:

202985 296000

output:

62
1 2 1
2 28 0 3 1
2 4 0 27 1
2 5 0 26 1
2 6 0 25 1
1 7 1
1 8 1
2 9 0 24 1
2 10 0 23 1
2 11 0 22 1
1 12 1
1 13 1
1 14 1
2 15 0 21 1
1 16 1
2 17 0 20 1
2 18 0 19 1
1 48 1
2 48 0 48 1
2 49 0 49 1
2 51 0 51 1
2 55 0 55 1
2 56 0 56 1
2 57 0 57 1
2 60 0 60 1
2 61 0 61 1
2 62 0 62 1
1 29 0
2 30 0 31 1
2 ...

result:

ok ok

Test #21:

score: 0
Accepted
time: 0ms
memory: 3532kb

input:

438671 951305

output:

65
1 2 1
2 28 0 3 1
2 4 0 27 1
3 5 1 64 0 64 1
2 6 0 26 1
1 7 1
1 8 1
2 9 0 25 1
2 10 0 24 1
2 11 0 23 1
1 12 1
1 13 1
2 14 0 22 1
2 15 0 21 1
2 16 0 20 1
1 17 1
1 18 1
1 19 1
1 48 1
2 51 0 51 1
2 52 0 52 1
2 53 0 53 1
2 56 0 56 1
2 57 0 57 1
2 58 0 58 1
2 61 0 61 1
3 29 0 63 0 63 1
2 65 0 65 1
2 30...

result:

ok ok

Test #22:

score: 0
Accepted
time: 0ms
memory: 3616kb

input:

425249 739633

output:

70
1 2 1
2 29 0 3 1
2 4 0 28 1
2 5 0 27 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
2 11 0 26 1
1 12 1
2 13 0 25 1
2 14 0 24 1
1 15 1
2 16 0 23 1
2 17 0 22 1
2 18 0 21 1
2 19 0 20 1
1 54 1
2 54 0 54 1
2 55 0 55 1
2 56 0 56 1
2 57 0 57 1
2 59 0 59 1
2 60 0 60 1
2 62 0 62 1
2 68 0 68 1
2 69 0 69 1
2 30 0 31 1
2 ...

result:

ok ok

Test #23:

score: 0
Accepted
time: 0ms
memory: 3560kb

input:

551207 961718

output:

75
1 2 1
2 3 0 31 1
2 4 0 30 1
2 5 0 29 1
2 6 0 28 1
1 7 1
1 8 1
2 9 0 27 1
1 10 1
2 11 0 26 1
2 12 0 25 1
1 13 1
2 14 0 24 1
2 15 0 23 1
1 16 1
2 17 0 22 1
2 18 0 21 1
1 19 1
1 20 1
1 59 1
2 61 0 61 1
2 62 0 62 1
2 64 0 64 1
2 65 0 65 1
2 67 0 67 1
2 68 0 68 1
2 70 0 70 1
2 73 0 73 1
2 74 0 74 1
2 ...

result:

ok ok

Test #24:

score: 0
Accepted
time: 0ms
memory: 3536kb

input:

114691 598186

output:

71
1 2 1
6 30 0 3 1 70 0 70 1 71 0 71 1
1 4 1
2 5 0 29 1
2 6 0 28 1
2 7 0 27 1
2 8 0 26 1
2 9 0 25 1
2 10 0 24 1
2 11 0 23 1
2 12 0 22 1
2 13 0 21 1
2 14 0 20 1
2 15 0 19 1
2 16 0 18 1
1 17 1
1 54 1
2 55 0 55 1
2 56 0 56 1
2 57 0 57 1
2 58 0 58 1
2 59 0 59 1
2 60 0 60 1
2 61 0 61 1
2 62 0 62 1
2 63 ...

result:

ok ok

Test #25:

score: 0
Accepted
time: 0ms
memory: 3552kb

input:

234654 253129

output:

57
1 2 1
1 3 1
1 4 1
2 5 0 25 1
2 6 0 24 1
1 7 1
2 8 0 23 1
1 9 1
2 10 0 22 1
2 11 0 21 1
1 12 1
2 13 0 20 1
2 14 0 19 1
1 15 1
1 16 1
1 17 1
1 18 1
2 45 0 45 1
2 49 0 49 1
2 50 0 50 1
2 52 0 52 1
2 53 0 53 1
2 55 0 55 1
2 57 0 57 1
1 26 0
2 27 0 28 1
2 56 0 56 1
2 29 0 30 1
2 55 0 55 1
2 31 0 32 1
...

result:

ok ok

Test #26:

score: 0
Accepted
time: 0ms
memory: 3664kb

input:

554090 608599

output:

61
1 2 1
1 3 0
1 4 0
2 5 0 28 1
2 6 0 27 1
1 7 1
1 8 1
1 9 1
2 10 0 26 1
1 11 1
2 12 0 25 1
2 13 0 24 1
2 14 0 23 1
1 15 1
1 16 1
2 17 0 22 1
1 18 1
2 19 0 21 1
1 20 1
2 47 0 47 1
2 48 0 48 1
2 50 0 50 1
2 53 0 53 1
2 54 0 54 1
2 55 0 55 1
2 57 0 57 1
2 61 0 61 1
1 29 0
2 30 0 31 1
2 60 0 60 1
1 32 ...

result:

ok ok

Extra Test:

score: 0
Extra Test Passed