QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#820303#9733. Heavy-light DecompositionTosakaUCWAC ✓19ms7036kbC++202.2kb2024-12-18 20:52:122024-12-18 20:52:13

Judging History

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

  • [2024-12-18 20:52:13]
  • 评测
  • 测评结果:AC
  • 用时:19ms
  • 内存:7036kb
  • [2024-12-18 20:52:12]
  • 提交

answer

#include <bits/stdc++.h>
using i64 = long long;
#define int i64
#define pb push_back
#define ep emplace
#define eb emplace_back
using std::cerr;
// using namespace std::views;
// using namespace std::ranges;
using std::max, std::min, std::swap, std::array;
using std::cin, std::cout, std::string, std::vector;
using std::ostream;
int read(int x = 0, int f = 0, char ch = getchar()) {
    while (ch < 48 or 57 < ch) f = ch == 45, ch = getchar();
    while(48 <= ch and ch <= 57) x = x * 10 + ch - 48, ch = getchar();
    return f ? -x : x;
}
template <class T1, class T2> ostream &operator<<(ostream &os, const std::pair<T1, T2> &a) { return os << "(" << a.first << ", " << a.second << ")"; };
template <class T> ostream &operator<<(ostream &os, const vector<T> &as) { const int sz = as.size(); os << "["; for (int i = 0; i < sz; ++i) { if (i >= 256) { os << ", ..."; break; } if (i > 0) { os << ", "; } os << as[i]; } return os << "]"; }
template <class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << '\n'; }
using pii = std::pair<int, int>;
#define l first
#define r second

void solve() {
    int n = read();
    int k = read();
    vector<pii> a(k);
    for (auto &[l, r] : a) l = read(), r = read();
    std::ranges::sort(a, [&](pii a, pii b) {
        return a.r - a.l > b.r - b.l;
    });

    vector<int> ans(n + 1);
    vector<int> siz(n + 1);
    vector<int> son(n + 1);

    for (auto [l, r] : a) {
        for (int i = l + 1; i <= r; i++) {
            ans[i] = i - 1;
        }
    }

    auto [l, r] = a[0];
    son[r] = 0, siz[r] = 1;
    for (int i = k - 1; i; i--) {
        auto [x, y] = a[i];
        int len = y - x + 1;
        while (r > l and siz[son[r]] < len) {
            r--;
            son[r] = r + 1;
            siz[r] = siz[r + 1] + 1;
        }
        if (l == r and siz[son[r]] < len) {
            cout << "IMPOSSIBLE\n";
            return;
        }
        siz[r] += len;
        ans[x] = r;
    }

    for (int i = 1; i <= n; i++) {
        cout << ans[i] << " \n"[i == n];
    }
}

signed main() {
    for (int T = read(); T--; solve());
    // solve();
    return 0;
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

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

output:

0 1 2 3 4 4 3 7 3 9 10 4
2 0 2 2
IMPOSSIBLE

result:

ok Correct. (3 test cases)

Test #2:

score: 0
Accepted
time: 6ms
memory: 5540kb

input:

10
1 1
1 1
100000 1
1 100000
12 4
1 3
4 6
7 9
10 12
6 3
4 6
2 3
1 1
8999 3
1 3000
3001 6000
6001 8999
14 4
1 3
4 6
7 10
11 14
17 5
1 3
4 6
7 10
11 14
15 17
19999 2
1 9999
10000 19999
1 1
1 1
5 3
1 1
2 3
4 5

output:

0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...

result:

ok Correct. (10 test cases)

Test #3:

score: 0
Accepted
time: 5ms
memory: 4312kb

input:

5
11 5
1 3
4 6
7 8
9 10
11 11
39998 4
1 10000
10001 20000
20001 30000
30001 39998
49000 5
1 10000
39999 49000
10001 20000
20001 30000
30001 39998
16 5
1 1
2 3
4 6
7 11
12 16
10 5
1 2
3 4
5 6
7 8
9 10

output:

0 1 2 1 4 5 1 7 1 9 2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 ...

result:

ok Correct. (5 test cases)

Test #4:

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

input:

10000
20 6
17 20
7 9
1 3
4 6
10 12
13 16
20 12
7 7
4 4
10 10
8 8
3 3
1 1
6 6
2 2
5 5
11 11
12 20
9 9
20 16
11 11
5 6
9 9
2 2
12 12
1 1
18 20
8 8
15 15
13 13
16 17
10 10
14 14
3 3
4 4
7 7
20 16
6 7
10 10
13 13
18 18
19 19
14 14
1 1
20 20
8 8
4 5
9 9
2 3
12 12
11 11
16 17
15 15
20 5
1 1
6 6
7 12
13 20...

output:

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

result:

ok Correct. (10000 test cases)

Test #5:

score: 0
Accepted
time: 10ms
memory: 3572kb

input:

20000
13 12
12 12
7 7
1 1
5 5
9 9
8 8
13 13
4 4
3 3
6 6
10 11
2 2
16 8
4 4
5 5
1 1
6 6
7 7
3 3
8 16
2 2
20 17
19 19
1 1
17 18
14 14
4 4
13 13
7 7
5 5
11 11
15 15
16 16
20 20
12 12
9 10
8 8
2 3
6 6
17 9
3 4
2 2
9 10
7 8
5 6
11 12
1 1
15 17
13 14
6 2
2 6
1 1
1 1
1 1
10 2
5 10
1 4
17 17
3 3
12 12
15 15...

output:

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

result:

ok Correct. (20000 test cases)

Test #6:

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

input:

50000
1 1
1 1
4 3
1 1
4 4
2 3
9 9
1 1
5 5
8 8
9 9
7 7
2 2
3 3
6 6
4 4
4 2
1 2
3 4
2 2
1 1
2 2
1 1
1 1
10 2
1 7
8 10
8 8
4 4
5 5
6 6
8 8
3 3
1 1
2 2
7 7
7 7
7 7
4 4
5 5
2 2
3 3
1 1
6 6
10 2
8 10
1 7
8 1
1 8
2 1
1 2
9 4
1 2
5 6
7 9
3 4
7 1
1 7
7 2
1 1
2 7
4 2
1 1
2 4
6 3
3 6
1 1
2 2
3 3
3 3
1 1
2 2
1 ...

output:

0
2 0 2 2
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0
0 1 2 3 4 5 6 4 8 9
IMPOSSIBLE
IMPOSSIBLE
0 1 2 3 4 5 6 4 8 9
0 1 2 3 4 5 6 7
0 1
7 1 7 3 7 5 0 7 8
0 1 2 3 4 5 6
6 0 2 3 4 5 6
3 0 2 3
5 5 0 3 4 5
IMPOSSIBLE
0
3 3 0 3
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
0 1 1 1
3 3 0 3 3
IMPOSSIBL...

result:

ok Correct. (50000 test cases)

Test #7:

score: 0
Accepted
time: 8ms
memory: 3896kb

input:

100
2619 693
286 286
81 81
552 552
397 397
24 24
414 414
378 378
660 660
538 538
125 125
190 190
585 585
180 180
564 564
218 218
158 158
425 425
189 189
94 94
29 29
678 678
543 543
352 352
659 659
467 467
403 403
298 298
517 517
196 196
156 156
278 278
259 259
417 417
499 499
246 246
195 195
380 380...

output:

2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 2618 ...

result:

ok Correct. (100 test cases)

Test #8:

score: 0
Accepted
time: 10ms
memory: 6600kb

input:

100
53984 965
9577 9632
53593 53648
17305 17360
40321 40376
37465 37520
45753 45808
52921 52976
21281 21336
44241 44296
17921 17976
40545 40600
7897 7952
9689 9744
32089 32144
43345 43400
46817 46872
4817 4872
24585 24640
41889 41944
36065 36120
3585 3640
1486 1540
29793 29848
8065 8120
43401 43456
...

output:

IMPOSSIBLE
IMPOSSIBLE
35762 1 2 3 4 5 35763 35762 8 35762 10 11 12 13 35763 35763 35763 35762 18 35763 35763 35762 22 35763 35763 35763 35763 35763 35762 29 30 35762 32 35763 35762 35 36 35763 35762 39 40 41 42 43 44 45 46 47 35762 49 35763 35763 35763 35762 54 55 56 35762 58 59 35763 35762 62 63 64...

result:

ok Correct. (100 test cases)

Test #9:

score: 0
Accepted
time: 19ms
memory: 7036kb

input:

2
100000 72281
52926 52926
1645 1646
33266 33266
88480 88480
16983 16983
29975 29977
32528 32528
89186 89186
5810 5810
90512 90512
8859 8859
22671 22671
51648 51649
26506 26506
99017 99018
64526 64526
61453 61454
73914 73914
27338 27339
43510 43510
22298 22300
59714 59714
64394 64395
71955 71956
481...

output:

28442 28441 2 3 28442 28442 28441 7 28442 28441 10 11 28442 28442 28442 28441 16 28441 18 19 20 28442 28441 23 24 28441 26 28442 28442 28442 28442 28442 28442 28442 28442 28441 36 28441 38 39 28442 28442 28442 28442 28441 45 28441 47 28441 49 50 28442 28442 28442 28442 28442 28442 28442 28442 28441 ...

result:

ok Correct. (2 test cases)

Test #10:

score: 0
Accepted
time: 15ms
memory: 3800kb

input:

100000
2 1
1 2
2 1
1 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
1 1
2 2
2 2
2 2
1 1
2 2
1 1
2 2
2 2
1 1
2 2
2 2
1 1
2 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
1 1
2 2
2 2
1 1
2 2
2 2
2 2
1 1
2 1
1 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
2 2
1 1
2 1
1 2
2 2
1 1
2 2
2 2
1 1
2 2
2 1
1 2
2 2
2 2
1 1
2 2
2 2
1 1
2 2
1 1
2 2
2 1
1 2
2 2
1...

output:

0 1
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0 1
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
0...

result:

ok Correct. (100000 test cases)

Test #11:

score: 0
Accepted
time: 13ms
memory: 3580kb

input:

100000
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok Correct. (100000 test cases)

Test #12:

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

input:

100000
2 1
1 2
3 1
1 3
5 2
1 1
2 5
4 4
2 2
4 4
3 3
1 1
3 3
1 1
3 3
2 2
5 1
1 5
1 1
1 1
3 2
1 1
2 3
5 5
5 5
2 2
3 3
4 4
1 1
3 3
3 3
1 1
2 2
5 4
3 4
1 1
2 2
5 5
4 3
2 2
1 1
3 4
1 1
1 1
4 1
1 4
5 4
3 4
2 2
1 1
5 5
3 1
1 3
3 3
1 1
3 3
2 2
5 1
1 5
1 1
1 1
2 2
2 2
1 1
5 1
1 5
1 1
1 1
2 2
2 2
1 1
4 2
4 4
1...

output:

0 1
0 1 2
4 0 2 3 4
IMPOSSIBLE
IMPOSSIBLE
0 1 2 3 4
0
2 0 2
IMPOSSIBLE
IMPOSSIBLE
3 3 0 3 3
3 3 0 3
0
0 1 2 3
3 3 0 3 3
0 1 2
IMPOSSIBLE
0 1 2 3 4
0
IMPOSSIBLE
0 1 2 3 4
0
IMPOSSIBLE
0 1 2 2
4 4 0 3 4
0 1 1
IMPOSSIBLE
IMPOSSIBLE
0
3 1 0 3 4
0
IMPOSSIBLE
4 4 0 3 4
0 1 2
3 3 0 3
0
0
IMPOSSIBLE
0 1 2 1...

result:

ok Correct. (100000 test cases)

Test #13:

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

input:

5000
50 26
5 6
9 10
1 1
23 24
43 44
19 20
29 30
2 2
17 18
47 48
3 4
35 36
27 28
25 26
49 50
31 32
45 46
15 16
39 40
21 22
11 12
13 14
37 38
33 34
7 8
41 42
86 12
17 20
33 36
41 86
1 3
4 6
13 16
25 28
37 40
29 32
21 24
7 9
10 12
59 35
5 5
6 6
22 22
31 31
32 32
25 25
21 21
20 20
26 26
2 2
34 34
3 3
35...

output:

IMPOSSIBLE
83 1 2 83 4 5 83 7 8 83 10 11 82 13 14 15 82 17 18 19 82 21 22 23 82 25 26 27 82 29 30 31 82 33 34 35 82 37 38 39 0 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
58 58 58 58 58 58 58 58 58 58 58 58 58...

result:

ok Correct. (5000 test cases)

Test #14:

score: 0
Accepted
time: 6ms
memory: 3656kb

input:

5000
335 22
13 18
134 140
85 91
50 56
7 12
31 36
113 119
71 77
106 112
1 6
37 42
64 70
92 98
43 49
120 126
127 133
99 105
25 30
141 335
19 24
57 63
78 84
475 21
40 42
22 24
37 39
16 18
7 9
31 33
49 51
43 45
52 54
19 21
1 2
55 57
10 12
5 6
58 475
28 30
13 15
25 27
34 36
3 4
46 48
252 159
138 138
77 7...

output:

329 1 2 3 4 5 329 7 8 9 10 11 329 13 14 15 16 17 329 19 20 21 22 23 329 25 26 27 28 29 329 31 32 33 34 35 329 37 38 39 40 41 328 43 44 45 46 47 48 328 50 51 52 53 54 55 328 57 58 59 60 61 62 328 64 65 66 67 68 69 328 71 72 73 74 75 76 328 78 79 80 81 82 83 328 85 86 87 88 89 90 328 92 93 94 95 96 97...

result:

ok Correct. (5000 test cases)

Test #15:

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

input:

1000
89 19
17 18
7 8
11 12
1 1
27 28
35 89
13 14
15 16
25 26
9 10
31 32
3 4
33 34
29 30
19 20
23 24
5 6
21 22
2 2
962 187
886 890
361 365
376 380
766 770
901 905
181 185
626 630
921 925
86 90
416 420
281 285
506 510
171 175
41 45
776 780
441 445
491 495
341 345
631 635
141 145
356 360
891 895
231 23...

output:

88 88 87 3 87 5 87 7 87 9 87 11 87 13 87 15 87 17 87 19 87 21 87 23 87 25 87 27 87 29 87 31 87 33 0 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
958 1 2 3 958 5 6 7 958 9 10 11 958 13...

result:

ok Correct. (1000 test cases)

Test #16:

score: 0
Accepted
time: 8ms
memory: 3720kb

input:

500
4037 286
1756 1768
2770 2782
3095 3107
1405 1417
2705 2717
2913 2925
1847 1859
482 494
807 819
2744 2756
2822 2834
2276 2288
3238 3250
1106 1118
2055 2067
3056 3068
2328 2340
2146 2158
1249 1261
1015 1027
2224 2236
1613 1625
1717 1729
222 234
3329 3341
1795 1807
2354 2366
37 48
3082 3094
2068 20...

output:

4025 1 2 3 4 5 6 7 8 9 10 11 4025 13 14 15 16 17 18 19 20 21 22 23 4025 25 26 27 28 29 30 31 32 33 34 35 4025 37 38 39 40 41 42 43 44 45 46 47 4025 49 50 51 52 53 54 55 56 57 58 59 4025 61 62 63 64 65 66 67 68 69 70 71 4025 73 74 75 76 77 78 79 80 81 82 83 4025 85 86 87 88 89 90 91 92 93 94 95 4025 ...

result:

ok Correct. (500 test cases)

Extra Test:

score: 0
Extra Test Passed