QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#123991#89. Restore ArrayQwerty1232#7 14ms3908kbC++173.7kb2023-07-14 02:34:152024-07-04 00:38:44

Judging History

你现在查看的是最新测评结果

  • [2024-07-04 00:38:44]
  • 评测
  • 测评结果:7
  • 用时:14ms
  • 内存:3908kb
  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-14 02:34:15]
  • 提交

answer

#include <bits/stdc++.h>

int32_t main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int n, m;
    std::cin >> n >> m;
    std::vector<std::array<int, 4>> input(m);
    for (auto& [l, r, k, val] : input) {
        std::cin >> l >> r >> k >> val;
        r++;
        k--;
    }

    const auto true_inp = input;

    auto check = [&](std::vector<int> ans) {
        bool fail = false;
        auto& input = true_inp;
        for (auto& [l, r, k, val] : input) {
            int sum = std::accumulate(ans.begin() + l, ans.begin() + r, 0);
            if (val == 0) {
                fail = fail || ((r - l) - sum <= k);
            } else {
                fail = fail || (sum < (r - l) - k);
            }
            if (fail) {
                break;
            }
        }
        return !fail;
    };

    if (n <= 18) {
        for (int mask = 0; mask < (1 << n); mask++) {
            std::vector<int> ans(n);
            for (int j = 0; j < n; j++) {
                ans[j] = (mask >> j) & 1;
            }
            if (check(ans)) {
                for (int i = 0; i < n; i++) {
                    std::cout << ans[i] << " \n"[i == n - 1];
                }
                return 0;
            }
        }
        std::cout << "-1\n";
        return 0;
    }

    std::vector<int> ans(n, -1);
    std::array<std::vector<int>, 3> prf;

    auto recalc = [&]() {
        for (int i = 0; i < 3; i++) {
            prf[i].assign(n + 1, 0);
            for (int j = 0; j < n; j++) {
                prf[i][j + 1] = prf[i][j] + (ans[j] == i - 1);
            }
        }
    };
    auto get = [&](int c, int l, int r) {
        return prf[c + 1][r] - prf[c + 1][l];
    };

    while (true) {
        recalc();

        bool fail = false;
        for (auto& [l, r, k, val] : input) {
            if (val == 0 && get(0, l, r) > k) {
                l = r = k = val = -1;
                continue;
            }
            if (val == 1 && get(1, l, r) >= (r - l - k)) {
                l = r = k = val = -1;
                continue;
            }

            if (get(-1, l, r) == 0) {
                std::cout << "-1\n";
                return 0;
            }
            if (val == 0 && k == r - l - 1 || val == 1 && k == 0) {
                for (int i = l; i < r; i++) {
                    if (ans[i] >= 0 && ans[i] != val) {
                        std::cout << "-1\n";
                        return 0;
                    }
                    assert(ans[i] == -1 || ans[i] == val);
                    ans[i] = val;
                }
                l = r = k = val = -1;
                fail = true;
                break;
            }
            assert(val == 0 && k == 0 || val == 1 && k == r - l - 1);
            if (get(-1, l, r) == 1) {
                int it = std::find(ans.begin() + l, ans.begin() + r, -1) - ans.begin();
                assert(it != r);

                ans[it] = val;
                l = r = k = val = -1;
                fail = true;
                break;
            }
        }
        input.erase(std::find(input.begin(), input.end(), std::array<int, 4>{-1, -1, -1, -1}), input.end());

        if (!fail) {
            for (auto& [l, r, k, val] : input) {
                assert(get(-1, l, r) >= 2);
            }
            for (int i = 0, c = 0; i < n; i++) {
                c += ans[i] == -1;
                if (ans[i] == -1) {
                    ans[i] = c % 2;
                }
            }

            // assert(check(ans));
            for (int i = 0; i < n; i++) {
                std::cout << ans[i] << " \n"[i == n - 1];
            }
            return 0;
        }
    }

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 7
Accepted

Test #1:

score: 7
Accepted
time: 0ms
memory: 3828kb

input:

8 13
0 1 2 1
3 5 1 1
5 7 2 1
0 2 2 0
2 5 3 1
3 7 4 1
2 2 1 0
0 1 1 0
2 7 5 1
2 4 1 0
0 4 2 0
4 5 2 1
1 2 1 0

output:

1 0 0 1 1 1 1 0

result:

ok your plan is correct!

Test #2:

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

input:

7 10
0 3 4 1
2 3 1 0
1 2 2 0
1 3 2 0
0 5 3 0
0 5 5 1
1 4 2 0
2 4 1 0
1 3 3 0
3 5 2 0

output:

1 0 0 0 1 0 0

result:

ok your plan is correct!

Test #3:

score: 0
Accepted
time: 3ms
memory: 3564kb

input:

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

output:

0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0

result:

ok your plan is correct!

Test #4:

score: 0
Accepted
time: 3ms
memory: 3820kb

input:

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

output:

1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0

result:

ok your plan is correct!

Test #5:

score: 0
Accepted
time: 14ms
memory: 3756kb

input:

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

output:

-1

result:

ok No Solution!

Test #6:

score: 0
Accepted
time: 7ms
memory: 3628kb

input:

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

output:

-1

result:

ok No Solution!

Test #7:

score: 0
Accepted
time: 3ms
memory: 3760kb

input:

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

output:

0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1

result:

ok your plan is correct!

Test #8:

score: 0
Accepted
time: 3ms
memory: 3544kb

input:

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

output:

1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1

result:

ok your plan is correct!

Test #9:

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

input:

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

output:

1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1

result:

ok your plan is correct!

Test #10:

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

input:

17 6
1 1 1 0
2 3 1 0
0 0 1 1
2 13 8 1
6 8 1 0
2 5 2 0

output:

1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0

result:

ok your plan is correct!

Subtask #2:

score: 0
Wrong Answer

Test #11:

score: 13
Accepted
time: 2ms
memory: 3908kb

input:

4992 9040
331 4442 1 0
3489 4173 1 0
393 4420 1 0
1324 2666 1 0
1317 4131 1 0
399 3010 1 0
1843 4154 1 0
1119 4876 1 0
4216 4980 1 0
2003 4370 1 0
769 1927 1 0
934 3414 1 0
2072 2507 1 0
215 3526 1 0
1493 4107 1 0
539 1643 1 0
2783 4338 1 0
967 1190 1 0
1374 2868 1 0
34 1378 1 0
71 1418 1 0
2120 223...

output:

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...

result:

ok your plan is correct!

Test #12:

score: -13
Wrong Answer
time: 2ms
memory: 3640kb

input:

4952 9496
4222 4300 1 0
2892 4392 1 0
4158 4700 1 0
2720 3468 1 0
3002 3114 1 0
1010 4681 1 0
629 4392 1 0
734 2030 1 0
1024 2836 1 0
299 2880 1 0
3728 4858 1 0
1616 2861 1 0
2716 2938 1 0
1265 2892 1 0
1695 1778 1 0
1414 2231 1 0
47 4835 1 0
1554 3489 1 0
2591 3178 1 0
2424 4665 1 0
1089 2460 1 0
2...

output:

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...

result:

wrong answer your plan does not meet the constraint #4201

Subtask #3:

score: 0
Wrong Answer

Dependency #1:

100%
Accepted

Test #17:

score: 25
Accepted
time: 2ms
memory: 3600kb

input:

4938 9881
1814 3083 1 0
2918 2958 41 1
2085 2909 825 1
2595 3342 748 1
1147 2469 1323 1
2697 2734 1 0
407 4791 1 0
568 2847 1 0
2500 2905 1 0
1670 3662 1 0
1692 3400 1709 1
35 436 402 1
1393 2755 1 0
1074 4777 3704 1
552 1519 1 0
3216 3566 351 1
1841 2502 1 0
3 1708 1706 1
90 3062 1 0
1593 2428 1 0
...

output:

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...

result:

ok your plan is correct!

Test #18:

score: 0
Accepted
time: 2ms
memory: 3700kb

input:

4948 9938
597 2134 1 0
192 2940 2749 1
116 4688 4573 1
449 2324 1 0
3526 4697 1172 1
4178 4738 1 0
4472 4845 1 0
323 1072 1 0
724 4075 3352 1
2828 3622 1 0
712 980 269 1
891 1227 1 0
4117 4895 779 1
419 1627 1 0
927 2579 1653 1
1961 3667 1707 1
1065 3028 1 0
2275 4477 2203 1
3396 3451 56 1
1273 1660...

output:

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...

result:

ok your plan is correct!

Test #19:

score: -25
Wrong Answer
time: 2ms
memory: 3680kb

input:

4957 9852
86 2229 2144 1
838 3854 1 0
177 2427 1 0
1516 2489 974 1
3404 3854 1 0
2667 3472 1 0
260 834 1 0
3096 4769 1674 1
1288 3517 2230 1
60 4378 4319 1
1905 2286 1 0
21 1956 1 0
2956 3222 1 0
122 4000 1 0
4089 4678 590 1
425 4031 3607 1
1424 2198 1 0
1107 1949 843 1
4262 4638 1 0
327 4871 1 0
12...

output:

1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ...

result:

wrong answer your plan does not meet the constraint #1042

Subtask #4:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

0%