CSES - NOI 2024 - Results
Submission details
Task:Anime Shops
Sender:Kristófer Helgi Antonsson
Submission time:2024-03-06 19:18:04 +0200
Language:Python3 (CPython3)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.03 s1, 3details
#20.03 s1, 3details
#30.03 s1, 3details
#40.04 s1, 3details
#50.88 s3details
#60.93 s3details
#7--3details
#8--3details
#9ACCEPTED0.46 s2, 3details
#10ACCEPTED0.51 s2, 3details
#11--2, 3details
#120.48 s3details
#130.78 s3details
#14--3details
#15--3details
#160.46 s3details

Code

import sys
sys.setrecursionlimit(100000000)
# def search(shops, route, tj):
#     tj+=1
#     for i in shops:
#         if i in route:
#             return tj
#     if tj > m:
#         return -1
#     else:
#         svar = []
#         for y in route:
#             sr = search(shops, routes[y], tj)
#             if sr != -1:
#                 svar.append(sr)
#         if len(svar) > 0:
#             return min(svar)
#         else:
#             return -1


n,m,k = map(int, input().split())

shops = sorted([int(i)-1 for i in input().split()])

stist = [10000000000 for i in range(n)]

if n == 1:
    print(-1)
    exit()

routes = {}
for i in range(n):
    routes[i] = []

for i in range(m):
    a,b = map(int, input().split())
    a-=1
    b-=1
    
    routes[a].append(b)
    routes[b].append(a)


telj = 0
for y in range(min(shops), n):
    if y in shops:
        telj = 0
        if telj < stist[y]:
            stist[y] = telj

    else:
        telj += 1
        if telj < stist[y]:
            stist[y] = telj

telj = 0     
for y in range(max(shops), -1, -1):
    if y in shops:
        telj = 0
        if telj < stist[y]:
            stist[y] = telj

    else:
        telj += 1
        if telj < stist[y]:
            stist[y] = telj
 
        
telj = 0
for y in range(min(shops)-1, -1, -1):
    telj += 1
    if telj < stist[y]:
        stist[y] = telj  


last = min(shops)
for i in range(1, len(shops)):
    milli = abs(last - shops[i])
    if milli < stist[last] or stist[last] == 0:
        stist[last] = milli
    if milli < stist[shops[i]] or stist[shops[i]] == 0:
        stist[shops[i]] = milli
    

    last = shops[i]


for i in range(len(stist)):
    if stist[i] == 0:
        stist[i] = -1
print(*stist)

Test details

Test 1

Group: 1, 3

Verdict:

input
1000 2000 1
816
1 868
976 995
377 536
...

correct output
4 3 3 4 6 4 -1 4 5 2 2 5 5 3 5...

user output
815 814 813 812 811 810 809 80...
Truncated

Test 2

Group: 1, 3

Verdict:

input
1000 2000 20
578 955 222 813 494 962 753 71...

correct output
5 6 4 3 4 2 -1 3 3 3 4 3 2 3 -...

user output
204 203 202 201 200 199 198 19...
Truncated

Test 3

Group: 1, 3

Verdict:

input
1000 2000 100
945 230 119 680 975 520 490 28...

correct output
2 2 3 -1 2 -1 3 2 2 1 2 -1 3 2...

user output
8 7 6 5 4 3 2 1 1 1 1 2 3 2 1 ...
Truncated

Test 4

Group: 1, 3

Verdict:

input
1000 2000 1000
150 443 960 545 218 487 896 38...

correct output
1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 ...

user output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
Truncated

Test 5

Group: 3

Verdict:

input
100000 200000 1
77222
59470 61811
43092 48939
14395 19964
...

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

user output
77221 77220 77219 77218 77217 ...
Truncated

Test 6

Group: 3

Verdict:

input
100000 200000 20
70440 82302 64483 96767 51485 ...

correct output
-1 8 6 5 5 7 6 7 6 6 8 5 6 4 5...

user output
735 734 733 732 731 730 729 72...
Truncated

Test 7

Group: 3

Verdict:

input
100000 200000 100
68738 37820 55519 77758 46482 ...

correct output
4 5 5 5 5 4 6 -1 5 4 5 6 4 5 5...

user output
(empty)

Test 8

Group: 3

Verdict:

input
100000 200000 100000
47137 80137 73347 78145 9205 6...

correct output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Test 9

Group: 2, 3

Verdict: ACCEPTED

input
100000 99999 1
44158
1 2
2 3
3 4
...

correct output
44157 44156 44155 44154 44153 ...

user output
44157 44156 44155 44154 44153 ...
Truncated

Test 10

Group: 2, 3

Verdict: ACCEPTED

input
100000 99999 20
44158 25720 84658 90057 99607 ...

correct output
361 360 359 358 357 356 355 35...

user output
361 360 359 358 357 356 355 35...
Truncated

Test 11

Group: 2, 3

Verdict:

input
100000 99999 100000
44158 25720 84658 90057 99607 ...

correct output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Test 12

Group: 3

Verdict:

input
100000 99999 3
99998 99999 100000
1 2
1 3
1 4
...

correct output
33333 33332 33332 33332 33331 ...

user output
99997 99996 99995 99994 99993 ...
Truncated

Test 13

Group: 3

Verdict:

input
100000 99999 300
99701 99702 99703 99704 99705 ...

correct output
333 333 333 333 333 333 333 33...

user output
99700 99699 99698 99697 99696 ...
Truncated

Test 14

Group: 3

Verdict:

input
100000 99999 30000
70001 70002 70003 70004 70005 ...

correct output
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...

user output
(empty)

Test 15

Group: 3

Verdict:

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

correct output
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...

user output
(empty)

Test 16

Group: 3

Verdict:

input
100000 100000 2
1 50001
1 2
2 3
3 4
...

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

user output
50000 1 2 3 4 5 6 7 8 9 10 11 ...
Truncated