QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#498588#7752. The Only Way to the DestinationMCdycRE 29ms27368kbC++203.8kb2024-07-30 16:22:152024-07-30 16:22:17

Judging History

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

  • [2024-07-30 16:22:17]
  • 评测
  • 测评结果:RE
  • 用时:29ms
  • 内存:27368kb
  • [2024-07-30 16:22:15]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define all(a) a.begin(), a.end()
#define endl '\n'
using i64 = long long;
using a2 = array<int, 2>;
using a3 = array<int, 3>;

const int MAXN = 1e5 + 3e4;

vector<set<a2>> s(MAXN);
vector block(MAXN, vector<a2>());
vector<a3> space;

int n, m, k;

int get_id(const a3 &x)
{
    return lower_bound(space.begin(), space.end(), x) - space.begin();
}

vector<int> f, siz;

int find(int x)
{
    return f[x] == x ? x : f[x] = find(f[x]);
}

bool merge(int u, int v)
{
    u = find(u);
    v = find(v);
    if (u == v)
        return false;
    f[v] = u;
    siz[u] += siz[v];
    return true;
}

int solve()
{

    cin >> n >> m >> k;
    if (m > (k * 2 + 1))
    {
        cout << "No\n";
        return 0;
    }

    for (int i = 1; i <= k; i++)
    {
        int x1, x2, y;
        cin >> x1 >> x2 >> y;
        block[y].push_back({x1, x2});
    }

    for (int i = 1; i <= m; i++)
    {
        s[i].insert({1, n});
        for (auto [l, r] : block[i])
        {
            auto pos = prev(s[i].lower_bound(a2{l + 1, 0}));
            auto [x, y] = *pos;
            // cout << x << ' ' << y << ' ' << l << ' ' << r << endl;
            s[i].erase(pos);
            if (x < l)
                s[i].insert({x, l - 1});
            if (r < y)
                s[i].insert({r + 1, y});
        }
        for (auto [l, r] : s[i])
            space.push_back({l, r, i});
    }

    f.resize(space.size());
    iota(f.begin(), f.end(), 0);
    siz.resize(space.size(), 1);

    // for (auto [l, r, i] : space)
    //     cout << l << ' ' << r << ' ' << i << endl;

    // for (int i = 1; i <= m; i++)
    //     for (auto [l, r] : s[i])
    //         cout << i << ' ' << l << ' ' << r << endl;

    for (int i = 2; i <= m; i++)
    {
        for (auto [l, r] : s[i])
        {
            auto pos = s[i - 1].lower_bound(a2{l + 1, 0});
            if (pos == s[i - 1].begin())
                continue;
            pos = prev(pos);
            while (pos != s[i - 1].end() && (*pos)[0] <= r)
            {
                auto [x, y] = *pos;
                int u = get_id({l, r, i});
                int v = get_id({x, y, i - 1});

                // cout << l << ' ' << r << ' ' << i << " + " << x << ' ' << y << ' ' << i - 1 << endl;

                if (l <= x && y <= r)
                {
                    if (x != y || !merge(u, v))
                    {
                        cout << "NO\n";
                        return 0;
                    }
                }
                else if (x <= l && r <= y)
                {
                    if (l != r || !merge(u, v))
                    {
                        cout << "NO\n";
                        return 0;
                    }
                }
                else if (l <= y)
                {
                    if (l != y || !merge(u, v))
                    {
                        cout << "NO\n";
                        return 0;
                    }
                }
                else if (y >= r)
                {
                    if (x != r || !merge(u, v))
                    {
                        cout << "NO\n";
                        return 0;
                    }
                }
                pos = next(pos);
            }
        }
    }

    if (siz[find(0)] == space.size())
    {
        cout << "YES\n";
    }
    else
    {
        cout << "NO\n";
    }

    // cout << siz[find(0)] << ' ' << space.size() << endl;
    return 0;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int test = 1;
    // cin >> test;
    while (test--)
    {
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 3ms
memory: 12208kb

input:

5 3 2
2 5 1
1 4 3

output:

YES

result:

ok answer is YES

Test #2:

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

input:

5 3 1
2 4 2

output:

NO

result:

ok answer is NO

Test #3:

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

input:

2 4 2
2 2 1
1 1 4

output:

NO

result:

ok answer is NO

Test #4:

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

input:

409455775 596220461 69036
72554058 85866426 497212608
54242898 110165840 236869995
68671059 127632371 324336242
39386477 208393446 248270338
151972182 327931056 231832
36658944 75335495 293646122
29512382 138875677 205628469
149151850 327396301 590717922
114980184 165064700 323939243
1771834 7016377...

output:

No

result:

ok answer is NO

Test #5:

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

input:

492352378 305080633 7843
4443026 59435668 43774344
148037919 152714140 233850891
23465681 25644706 29094721
218880906 223382399 195350326
30354388 57548417 210322001
215861797 282963366 140401201
128835085 262089671 289987786
89642134 132385450 135154826
88549854 443943609 186500469
73405959 2961141...

output:

No

result:

ok answer is NO

Test #6:

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

input:

637493317 272647326 18872
235125367 274038529 101657521
84012914 230632216 208729885
77396165 274778785 86971626
59949785 67487180 54014838
8967806 13663939 165627860
273814 80873173 244758266
10799662 28836147 123264275
81690217 205853656 87572369
4165938 71826404 182160490
73454256 139035147 34330...

output:

No

result:

ok answer is NO

Test #7:

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

input:

968265955 400251061 29292
189900933 572657232 101824444
41616302 91608564 300924990
29447653 116897214 98265139
274463279 681074203 26841639
188552803 217106618 257163613
12791966 21045233 112554367
14994360 33417356 294739319
127527669 853583697 101006151
88764285 334288849 372857633
118983 1929905...

output:

No

result:

ok answer is NO

Test #8:

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

input:

200070144 949699290 92486
68894772 94679051 556201123
47772142 73772148 176036479
107892604 113083322 120644956
20688761 35271261 123208718
1380450 4376303 120661834
29198345 52932763 139140317
112870992 120612646 806518902
47993313 66645859 210086605
12670199 73607778 64106372
17944620 77542217 764...

output:

No

result:

ok answer is NO

Test #9:

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

input:

462863052 488754326 81145
62086002 304122868 460303286
29718979 37296285 115358072
256267563 280174981 360423354
36783311 226494015 6150011
47866919 457303813 157319989
28162173 297850076 63965832
74672578 440837166 453831103
25453046 77541568 351851868
210123269 319642964 336660870
165126622 299006...

output:

No

result:

ok answer is NO

Test #10:

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

input:

831071799 424735365 50027
213973815 633210684 245037051
130025644 149550106 251536031
143232046 687556749 407497819
16343791 49481063 242168508
13704090 185244112 384472286
418059372 418217852 129181183
120778805 670114184 14196708
67878066 409601494 166409442
282127936 497808043 168370385
155297072...

output:

No

result:

ok answer is NO

Test #11:

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

input:

559626567 997463389 4015
209532810 213666133 972089686
71901740 120726324 374492977
24028358 240900162 292640146
44466793 219708067 762613459
329422081 471336511 936782914
65748389 234764134 660350212
135793201 333079286 64782000
431634516 477733521 541508867
68662099 146214715 804185895
209965200 3...

output:

No

result:

ok answer is NO

Test #12:

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

input:

676074230 973405095 5403
12507656 14559658 757500575
25710279 50664113 392408816
116138842 192757349 72991191
257633937 289760597 972143209
382468789 495771491 708076627
21893967 138091883 142841095
8983873 36383644 276355425
34633842 47309250 157695506
320551937 454303568 689541475
164263653 302285...

output:

No

result:

ok answer is NO

Test #13:

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

input:

126164528 940173055 32011
7130825 75155955 581068667
261500 3019941 681543094
25546211 45094138 283078042
43286851 63531629 478572176
9443141 105158385 403067484
13812749 23473402 330152241
96421460 109414063 463500970
11047928 13335172 655292879
18240281 41305784 369463384
2251214 107357484 4800687...

output:

No

result:

ok answer is NO

Test #14:

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

input:

567596554 952381791 16370
257712605 368951198 1714934
345303113 424098936 862460283
103473936 455020418 770126495
96442972 188187128 860908101
418587817 434890023 940312967
23649568 195836851 35660788
44848292 249016806 234236545
136154258 275272362 149632022
69991150 159212458 79066415
226957118 36...

output:

No

result:

ok answer is NO

Test #15:

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

input:

968573412 174970807 1809
33503293 453445507 107379906
453671836 884345123 148667172
294037594 414273474 93381361
325066301 350960323 142755135
239022348 445968518 20439850
41437442 755456828 27888788
407644906 772509747 127651858
72782244 220760314 27389395
158948491 222325555 34089835
153854356 245...

output:

No

result:

ok answer is NO

Test #16:

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

input:

728014734 714396718 75347
94364479 179134729 268157401
187944380 560976229 686986115
97999764 181714678 172316907
213700720 704479857 227868788
39323002 531199362 529718227
16681723 87839643 180081876
114131431 400096199 6225610
160289214 341656282 239765907
73761942 106329577 6017414
96471175 56684...

output:

No

result:

ok answer is NO

Test #17:

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

input:

492492816 682638908 48216
177185170 217827401 427600776
266586754 352021427 306065927
188196942 390193114 440686843
91623066 117464585 149377740
219058205 226897914 211771974
10337746 90651394 608973678
26367661 304987372 395800169
124884464 358373318 214668783
170695849 384791939 29876365
296022527...

output:

No

result:

ok answer is NO

Test #18:

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

input:

409577789 774657790 94568
104517138 147602754 700748272
57754371 67817388 220754229
48726977 391380875 767993653
49295172 191645850 6449881
212309570 312533341 185253790
3161304 285402989 152577189
288652503 352647636 402325809
124191767 342902191 314907849
187091277 235274522 512372143
233454144 23...

output:

No

result:

ok answer is NO

Test #19:

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

input:

799033563 313275807 22138
46368911 279374422 136257669
137325510 164050101 200448062
268820911 718059892 92101441
51257149 207734377 2320211
6291839 9018577 120587772
44114517 334143076 26023387
38590144 260635441 244408111
506448113 707587224 53857955
19441029 31183455 95781777
36586538 89731059 92...

output:

No

result:

ok answer is NO

Test #20:

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

input:

210501544 783490179 74845
2865446 4117198 210272907
115420001 139266554 390157293
11874621 88649964 323511349
84102300 154368409 79805179
20080182 193516293 391783821
601579 78083735 130430096
4701993 25836559 647621449
49948829 67272800 65899588
7507277 12625477 682343858
6606771 10754704 291222402...

output:

No

result:

ok answer is NO

Test #21:

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

input:

900778969 19552 9776
81007357 81007695 8317
819968754 819969268 3941
599489332 599489411 8709
367750716 367751358 16461
878408222 878408309 16411
221309561 221310005 13257
42305643 42305901 14407
774237782 774238557 10843
324530118 324531092 8943
373621580 373622339 11127
699131279 699131693 8316
15...

output:

NO

result:

ok answer is NO

Test #22:

score: 0
Accepted
time: 29ms
memory: 27368kb

input:

961899231 129282 64641
879370736 879371434 65374
264067820 264068076 97331
507468967 507469411 4094
131684344 131684562 33786
614106461 614106885 48659
505128383 505129022 113877
317549893 317550403 50059
867203386 867204356 68467
632995782 632996099 100428
271920763 271921134 99433
10405292 1040571...

output:

NO

result:

ok answer is NO

Test #23:

score: 0
Accepted
time: 18ms
memory: 19336kb

input:

34531099 62552 31276
20546624 20547365 8163
6706301 6707239 32165
6042954 6043542 57909
7464648 7465207 62141
2842836 2843374 34793
29728110 29728728 17054
19501231 19501548 36370
25953828 25953950 39744
30041996 30042665 6081
19908609 19908682 35515
6524025 6524676 31622
32786958 32787066 39717
106...

output:

NO

result:

ok answer is NO

Test #24:

score: -100
Runtime Error

input:

727731593 139756 69878
445347151 445347369 65705
74807404 74807521 73867
4828861 4829114 96738
708877525 708877991 105276
355352060 355352144 130510
511111554 511112537 137379
197104075 197104907 67388
217324659 217325137 47657
131708840 131709243 103039
508885272 508886206 326
315539482 315540453 5...

output:


result: