Submission details
Task:Good grades
Sender:aalto25j_002
Submission time:2025-11-05 21:14:49 +0200
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.04 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.04 sdetails
#6ACCEPTED0.04 sdetails
#7ACCEPTED0.04 sdetails
#8ACCEPTED0.04 sdetails
#90.04 sdetails
#100.04 sdetails
#110.04 sdetails
#120.04 sdetails
#13ACCEPTED0.04 sdetails
#14ACCEPTED0.04 sdetails
#150.04 sdetails
#16ACCEPTED0.04 sdetails
#17ACCEPTED0.04 sdetails
#18ACCEPTED0.04 sdetails
#19ACCEPTED0.04 sdetails
#200.04 sdetails
#210.04 sdetails
#220.04 sdetails
#230.04 sdetails
#24ACCEPTED0.04 sdetails
#250.04 sdetails
#26ACCEPTED0.04 sdetails
#27ACCEPTED0.04 sdetails
#280.04 sdetails
#29ACCEPTED0.04 sdetails
#300.06 sdetails
#310.07 sdetails
#320.07 sdetails
#330.07 sdetails
#340.06 sdetails
#350.06 sdetails
#360.06 sdetails
#370.06 sdetails
#380.06 sdetails
#390.05 sdetails
#400.08 sdetails
#410.08 sdetails
#420.09 sdetails
#430.09 sdetails
#440.08 sdetails
#450.07 sdetails
#460.09 sdetails
#470.07 sdetails
#480.08 sdetails
#490.06 sdetails
#500.30 sdetails
#510.28 sdetails
#520.39 sdetails
#530.43 sdetails
#540.33 sdetails
#550.20 sdetails
#560.33 sdetails
#570.12 sdetails
#580.33 sdetails
#590.09 sdetails

Code

def solve():

    n, k = map(int, input().split())
    s = list(map(int, input().split()))

    # dp[i][j] = max total smarts using first i students divided into j groups
    dp = [[-1] * (k + 1) for _ in range(n + 1)]
    dp[0][0] = 0

    # To reconstruct groups
    parent = [[-1] * (k + 1) for _ in range(n + 1)]

    for i in range(1, n + 1):
        for j in range(1, min(i, k) + 1):
            min_smart = s[i - 1]
            for l in range(i, j - 1, -1):  # l from i down to j
                min_smart = min(min_smart, s[l - 1])
                group_size = i - l + 1
                val = dp[l - 1][j - 1]
                if val == -1:
                    continue
                curr = val + group_size * min_smart
                if curr > dp[i][j]:
                    dp[i][j] = curr
                    parent[i][j] = l - 1

    # Reconstruct groups
    groups = [0] * n
    cur_i = n
    cur_j = k
    group_id = k
    while cur_j > 0:
        start = parent[cur_i][cur_j]
        for idx in range(start, cur_i):
            groups[idx] = group_id
        cur_i = start
        cur_j -= 1
        group_id -= 1

    print(" ".join(map(str, groups)))

solve()

Test details

Test 1

Verdict: ACCEPTED

input
1 1

correct output

user output
1

Test 2

Verdict: ACCEPTED

input
2 2
7 6 

correct output
2 1 

user output
1 2

Test 3

Verdict: ACCEPTED

input
2 1
7 7 

correct output
1 1 

user output
1 1

Test 4

Verdict: ACCEPTED

input
2 2
7 1 

correct output
2 1 

user output
1 2

Test 5

Verdict: ACCEPTED

input
3 1
5 10 8 

correct output
1 1 1 

user output
1 1 1

Test 6

Verdict: ACCEPTED

input
3 1
6 10 2 

correct output
1 1 1 

user output
1 1 1

Test 7

Verdict: ACCEPTED

input
4 1
10 10 4 2 

correct output
1 1 1 1 

user output
1 1 1 1

Test 8

Verdict: ACCEPTED

input
4 4
5 1 5 4 

correct output
3 1 4 2 

user output
1 2 3 4

Test 9

Verdict:

input
4 2
1 6 7 1 

correct output
1 2 2 1 

user output
1 1 1 2

Test 10

Verdict:

input
5 3
6 8 9 7 9 

correct output
1 2 3 1 3 

user output
1 2 2 2 3

Test 11

Verdict:

input
5 3
10 8 10 1 2 

correct output
3 2 3 1 1 

user output
1 1 2 3 3

Test 12

Verdict:

input
5 3
2 1 10 6 10 

correct output
1 1 3 2 3 

user output
1 1 2 2 3

Test 13

Verdict: ACCEPTED

input
5 3
1 8 9 3 2 

correct output
1 3 3 2 1 

user output
1 2 2 3 3

Test 14

Verdict: ACCEPTED

input
5 5
10 6 2 10 9 

correct output
4 2 1 5 3 

user output
1 2 3 4 5

Test 15

Verdict:

input
5 2
1 9 9 3 4 

correct output
1 2 2 1 1 

user output
1 2 2 2 2

Test 16

Verdict: ACCEPTED

input
5 5
10 4 3 9 1 

correct output
5 3 2 4 1 

user output
1 2 3 4 5

Test 17

Verdict: ACCEPTED

input
5 1
3 8 4 5 10 

correct output
1 1 1 1 1 

user output
1 1 1 1 1

Test 18

Verdict: ACCEPTED

input
5 5
1 10 3 9 4 

correct output
1 5 2 4 3 

user output
1 2 3 4 5

Test 19

Verdict: ACCEPTED

input
5 1
4 6 5 5 1 

correct output
1 1 1 1 1 

user output
1 1 1 1 1

Test 20

Verdict:

input
10 6
6 8 9 7 9 6 9 5 7 7 

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

user output
1 2 2 2 2 3 4 5 6 6

Test 21

Verdict:

input
10 5
10 8 10 1 2 4 10 2 3 1 

correct output
5 4 5 1 2 3 5 2 2 1 

user output
1 1 1 2 2 3 4 5 5 5

Test 22

Verdict:

input
10 5
2 1 10 6 10 5 5 5 4 4 

correct output
1 1 5 4 5 3 3 3 2 2 

user output
1 1 2 3 4 5 5 5 5 5

Test 23

Verdict:

input
10 6
1 8 9 3 2 6 6 9 5 9 

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

user output
1 2 2 3 3 4 4 4 5 6

Test 24

Verdict: ACCEPTED

input
10 10
10 6 2 10 9 8 7 7 6 3 

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

user output
1 2 3 4 5 6 7 8 9 10

Test 25

Verdict:

input
10 3
1 9 9 3 4 10 10 5 1 7 

correct output
1 3 3 1 2 3 3 2 1 2 

user output
1 1 1 1 1 2 2 3 3 3

Test 26

Verdict: ACCEPTED

input
10 9
10 4 3 9 1 1 4 2 10 6 

correct output
8 4 3 7 1 1 5 2 9 6 

user output
1 2 3 4 5 5 6 7 8 9

Test 27

Verdict: ACCEPTED

input
10 1
3 8 4 5 10 8 5 10 4 6 

correct output
1 1 1 1 1 1 1 1 1 1 

user output
1 1 1 1 1 1 1 1 1 1

Test 28

Verdict:

input
10 9
1 10 3 9 4 6 9 3 5 1 

correct output
1 9 2 7 4 6 8 3 5 1 

user output
1 2 3 4 5 5 6 7 8 9

Test 29

Verdict: ACCEPTED

input
10 1
4 6 5 5 1 2 4 2 1 3 

correct output
1 1 1 1 1 1 1 1 1 1 

user output
1 1 1 1 1 1 1 1 1 1

Test 30

Verdict:

input
100 55
636562060 767928734 906523441 ...

correct output
32 42 50 33 51 29 50 23 35 37 ...

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

Test 31

Verdict:

input
100 42
773442532 122816 137572579 324...

correct output
34 1 8 16 9 13 6 20 10 19 18 3...

user output
1 2 3 3 3 3 3 3 3 4 4 4 4 4 5 ...

Test 32

Verdict:

input
100 44
198730372 27838076 590195590 4...

correct output
9 1 28 21 23 20 15 16 7 10 36 ...

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

Test 33

Verdict:

input
100 56
75940263 760367935 901888417 3...

correct output
6 44 51 19 8 33 36 54 29 54 1 ...

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

Test 34

Verdict:

input
100 97
967034924 587586158 185430194 ...

correct output
94 59 19 88 79 67 77 64 27 15 ...

user output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

Test 35

Verdict:

input
100 23
59249204 934941692 892631472 2...

correct output
2 22 21 6 10 23 12 3 15 11 19 ...

user output
1 2 2 3 3 3 3 3 4 4 4 4 4 4 5 ...

Test 36

Verdict:

input
100 90
356460601 224848374 881788059 ...

correct output
23 14 83 4 1 28 8 54 7 48 56 3...

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

Test 37

Verdict:

input
100 8
244103474 837431431 342493822 ...

correct output
2 7 3 5 7 5 3 6 3 5 1 1 5 3 1 ...

user output
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 ...

Test 38

Verdict:

input
100 88
11934038 257096283 933290530 4...

correct output
1 24 83 40 56 80 23 44 1 62 46...

user output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

Test 39

Verdict:

input
100 2
391337048 538883744 535937150 ...

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

user output
1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 ...

Test 40

Verdict:

input
200 110
636562060 767928734 906523441 ...

correct output
69 86 99 70 101 61 100 47 74 7...

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

Test 41

Verdict:

input
200 84
773442532 122816 137572579 324...

correct output
66 1 14 28 16 23 11 36 18 35 3...

user output
1 2 3 3 3 3 3 3 3 4 4 4 4 4 4 ...

Test 42

Verdict:

input
200 88
198730372 27838076 590195590 4...

correct output
17 3 53 42 45 40 29 30 13 18 6...

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

Test 43

Verdict:

input
200 111
75940263 760367935 901888417 3...

correct output
8 85 100 35 14 62 71 106 51 10...

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

Test 44

Verdict:

input
200 194
967034924 587586158 185430194 ...

correct output
185 114 39 173 151 128 147 124...

user output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

Test 45

Verdict:

input
200 45
59249204 934941692 892631472 2...

correct output
3 43 41 11 19 45 25 5 30 21 37...

user output
1 2 2 3 3 3 3 3 4 4 4 4 4 4 5 ...

Test 46

Verdict:

input
200 179
356460601 224848374 881788059 ...

correct output
54 33 162 8 4 61 15 113 14 99 ...

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

Test 47

Verdict:

input
200 16
244103474 837431431 342493822 ...

correct output
4 14 6 8 13 9 6 10 5 10 2 2 8 ...

user output
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 ...

Test 48

Verdict:

input
200 175
11934038 257096283 933290530 4...

correct output
2 40 165 67 105 157 37 77 2 11...

user output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

Test 49

Verdict:

input
200 3
391337048 538883744 535937150 ...

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

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

Test 50

Verdict:

input
500 275
636562060 767928734 906523441 ...

correct output
176 215 251 178 254 161 252 12...

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

Test 51

Verdict:

input
500 209
773442532 122816 137572579 324...

correct output
163 1 31 72 37 57 23 89 45 87 ...

user output
1 2 3 3 3 3 3 3 3 4 4 4 4 4 4 ...

Test 52

Verdict:

input
500 218
198730372 27838076 590195590 4...

correct output
42 8 130 102 113 97 73 75 34 4...

user output
1 1 2 2 2 2 3 3 3 3 4 4 5 6 6 ...

Test 53

Verdict:

input
500 276
75940263 760367935 901888417 3...

correct output
20 205 249 85 32 149 165 267 1...

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

Test 54

Verdict:

input
500 484
967034924 587586158 185430194 ...

correct output
469 290 97 438 372 322 367 317...

user output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

Test 55

Verdict:

input
500 111
59249204 934941692 892631472 2...

correct output
5 104 100 24 42 109 55 9 70 46...

user output
1 2 2 3 3 3 3 3 4 4 4 4 4 4 5 ...

Test 56

Verdict:

input
500 447
356460601 224848374 881788059 ...

correct output
154 88 394 30 18 168 46 279 43...

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

Test 57

Verdict:

input
500 39
244103474 837431431 342493822 ...

correct output
9 33 13 18 31 19 13 23 11 21 3...

user output
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 ...

Test 58

Verdict:

input
500 437
11934038 257096283 933290530 4...

correct output
7 101 407 167 251 388 97 191 7...

user output
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

Test 59

Verdict:

input
500 6
391337048 538883744 535937150 ...

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

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