Submission details
Task:Järjestys
Sender:Metabolix
Submission time:2025-12-04 13:23:18 +0200
Language:Python3 (PyPy3)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
#50
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1, 4, 5details
#20.06 s1, 4, 5details
#30.06 s1, 4, 5details
#40.07 s1, 4, 5details
#50.07 s1, 4, 5details
#60.07 s1, 2, 4, 5details
#70.08 s1, 3, 4, 5details
#80.07 s1, 4, 5details
#90.16 s2, 4, 5details
#100.18 s3, 4, 5details
#110.16 s4, 5details
#120.17 s4, 5details
#130.17 s4, 5details
#140.16 s4, 5details
#150.29 s2, 5details
#160.38 s3, 5details
#170.29 s5details
#180.32 s5details
#190.31 s5details
#200.33 s5details
#210.34 s5details
#220.38 s5details

Code

#!/usr/bin/env python3

def kelpaa(p):
    a = 0
    for x in p:
        if x[0] < a:
            return False
        a = x[1]
    return True

def osa1(p):
    # len(p) <= 5
    def rekursio(p, a):
        for i in range(len(p)):
            if p[i][0] >= a:
                p2 = p[:i] + p[i+1:]
                r = rekursio(p2, p[i][1]) if p2 else []
                if r is not None:
                    return [p[i]] + r
    return rekursio(p, 0) if len(p) <= 5 else None

def osa23(p):
    # x <= y aina tai x >= y aina, jolloin nouseva järjestys on oikea ratkaisu.
    p = sorted(p)
    if kelpaa(p):
        return p

def osa4(p):
    erikoismerkki = (1999999999, 0)
    alut = sorted(p + [erikoismerkki])
    loput = sorted(alut, key = lambda x: x[1])
    n = len(alut)
    kaaret = dict()
    for i in range(n):
        if loput[i][1] > alut[i][0]:
            return None
        kaaret[alut[i]] = loput[i]

    syklit = dict()
    nähty = set()
    for i in range(n):
        if alut[i] in nähty:
            continue
        nykyinen = alut[i]
        sykli = set()
        while nykyinen not in sykli:
            sykli.add(nykyinen)
            nähty.add(nykyinen)
            nykyinen = kaaret[nykyinen]
        syklit[alut[i]] = sykli

    def yhdista(s1_key, s1):
        for s2 in syklit.values():
            if s1 is s2:
                continue
            for c in s2:
                for a in s1:
                    b = kaaret[a]
                    d = kaaret[c]
                    if c[1] <= b[0] and a[1] <= d[0]:
                        kaaret[a] = d
                        kaaret[c] = b
                        s2.update(s1)
                        del syklit[s1_key]
                        return

    for s1_key in list(syklit.keys()):
        if s1_key not in syklit:
            continue
        s1 = syklit[s1_key]
        if len(s1) == n:
            ratkaisu = []
            a = erikoismerkki
            while kaaret[a] != erikoismerkki:
                a = kaaret[a]
                ratkaisu.append(a)
            return ratkaisu
        yhdista(s1_key, s1)

t = int(input())
for _ in range(t):
    n = int(input())
    parit = []
    for i in range(n):
        a, b = map(int, input().split())
        parit.append((a, b, i))

    tulos = osa4(parit) #osa23(parit) or osa1(parit)
    if tulos is None:
        print("NO")
    else:
        print("YES")
        for p in tulos:
            print(p[0], p[1])

Test details

Test 1

Group: 1, 4, 5

Verdict: ACCEPTED

input
100
1
74 75
1
100 43
...

correct output
YES
74 75
YES
100 43
YES
...

user output
YES
74 75
YES
100 43
YES
...
Truncated

Test 2

Group: 1, 4, 5

Verdict:

input
100
2
80 54
51 61
2
...

correct output
YES
51 61
80 54
YES
2 64
...

user output
YES
51 61
80 54
YES
2 64
...
Truncated

Test 3

Group: 1, 4, 5

Verdict:

input
100
3
3 74
91 45
100 24
...

correct output
YES
3 74
100 24
91 45
YES
...

user output
YES
3 74
100 24
91 45
YES
...
Truncated

Test 4

Group: 1, 4, 5

Verdict:

input
100
4
88 50
62 41
12 86
...

correct output
YES
12 86
88 50
62 41
66 93
...

user output
YES
62 41
66 93
88 50
12 86
...
Truncated

Test 5

Group: 1, 4, 5

Verdict:

input
100
5
82 80
80 92
5 22
...

correct output
YES
5 22
94 13
82 80
80 92
...

user output
YES
80 92
94 13
93 91
82 80
...
Truncated

Test 6

Group: 1, 2, 4, 5

Verdict:

input
100
5
34 38
26 30
1 6
...

correct output
YES
1 6
12 22
26 30
34 38
...

user output
YES
46 56
34 38
26 30
12 22
...
Truncated

Test 7

Group: 1, 3, 4, 5

Verdict:

input
100
5
50 40
28 25
51 7
...

correct output
YES
51 7
50 40
47 1
17 11
...

user output
YES
50 40
17 11
47 1
51 7
...
Truncated

Test 8

Group: 1, 4, 5

Verdict:

input
100
5
2 2
2 1
1 1
...

correct output
YES
1 2
2 1
2 1
1 1
...

user output
YES
2 2
1 2
1 1
2 1
...
Truncated

Test 9

Group: 2, 4, 5

Verdict:

input
100
100
175870020 296379324
248160539 883842002
21934885 781732852
...

correct output
NO
YES
4976156 6890135
10553287 11923223
14617057 17728163
...

user output
NO
YES
505046865 508844408
499601876 502814753
497365078 497433292
...
Truncated

Test 10

Group: 3, 4, 5

Verdict:

input
100
100
447597377 314433951
700232436 691277009
937268439 708165426
...

correct output
YES
998963839 391778929
995772196 257222033
995754704 553123757
994629465 247775824
...

user output
YES
973359293 912566443
991848108 707786383
961525122 745491826
960415167 662271936
...
Truncated

Test 11

Group: 4, 5

Verdict:

input
100
100
1 1
1 2
2 1
...

correct output
YES
1 2
2 1
1 2
2 2
...

user output
YES
2 2
2 2
2 2
2 2
...
Truncated

Test 12

Group: 4, 5

Verdict:

input
100
100
7 1
6 3
10 9
...

correct output
YES
6 7
7 8
9 10
10 10
...

user output
YES
2 1
5 1
6 2
10 2
...
Truncated

Test 13

Group: 4, 5

Verdict:

input
100
100
51 5
85 77
91 84
...

correct output
YES
100 24
100 25
100 3
100 6
...

user output
YES
97 100
90 81
91 63
62 66
...
Truncated

Test 14

Group: 4, 5

Verdict:

input
100
100
823828194 863717310
593641073 340054211
420481158 965069109
...

correct output
YES
999289319 634855378
996775156 433726648
983657502 55234695
981890636 112877413
...

user output
YES
837655861 991264522
96663815 577521349
941550256 1669679
657249032 737709307
...
Truncated

Test 15

Group: 2, 5

Verdict:

input
100
500
88724450 89315226
266915464 267648621
189301651 189661541
...

correct output
YES
764920 1459946
1936195 2832987
3691481 4085931
4991808 5840928
...

user output
YES
491061697 491263281
490117086 490832304
488906224 489883540
487580341 488142707
...
Truncated

Test 16

Group: 3, 5

Verdict:

input
100
500
763682761 317584504
756010800 260162861
435911339 78070399
...

correct output
YES
998768285 3307355
998714926 628486754
997115613 820932481
993320616 554600893
...

user output
YES
989294518 948517754
843427138 836502074
880586004 467895562
748613638 524903612
...
Truncated

Test 17

Group: 5

Verdict:

input
100
500
2 2
2 1
1 2
...

correct output
YES
1 2
2 2
2 1
1 2
...

user output
YES
2 2
2 2
2 2
2 2
...
Truncated

Test 18

Group: 5

Verdict:

input
100
500
10 6
10 10
9 10
...

correct output
YES
2 3
3 4
4 5
5 6
...

user output
YES
10 10
10 10
10 10
10 10
...
Truncated

Test 19

Group: 5

Verdict:

input
100
500
85 87
89 70
70 92
...

correct output
YES
96 97
100 67
100 10
100 97
...

user output
YES
89 100
91 68
99 70
42 94
...
Truncated

Test 20

Group: 5

Verdict:

input
100
500
861154169 119512584
569086662 606567153
288230434 322196278
...

correct output
YES
999945324 969534372
999738857 240617694
999244114 722161553
999207839 557351400
...

user output
YES
341754469 998324921
948511501 62091692
830020585 795555733
957244595 514163029
...
Truncated

Test 21

Group: 5

Verdict:

input
100
500
116439250 401518028
280329609 193466222
674040956 209050570
...

correct output
NO
YES
773701149 773852119
987509190 315670966
977413249 510418200
...

user output
NO
YES
906206511 991456785
780418396 696336788
675110477 507660001
...
Truncated

Test 22

Group: 5

Verdict:

input
100
500
934181189 942499518
684836806 395802802
957884803 570946201
...

correct output
YES
999772640 505132174
999111650 140844643
999028633 888134186
999020109 291046771
...

user output
YES
787523963 7089446
621119875 466247367
475561319 243054802
831444205 123404056
...
Truncated