CSES - Datatähti 2024 alku - Results
Submission details
Task:Käännöt
Sender:Lelleri
Submission time:2023-11-12 15:09:20 +0200
Language:Python3 (CPython3)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
Test results
testverdicttimegroup
#10.02 s1details
#20.02 s1details
#30.02 s1details
#40.03 s1details
#50.47 s1details
#60.02 s2details
#70.02 s2details
#80.02 s2details
#90.02 s2details
#100.02 s2details
#110.05 s2details
#120.05 s2details
#130.03 s2details
#140.04 s2details
#150.04 s2details
#160.02 s2details
#170.02 s3details
#180.02 s3details
#190.20 s3details
#200.15 s3details
#210.16 s3details
#220.10 s3details
#230.06 s3details
#240.09 s3details
#250.63 s3details
#260.02 s4details
#270.02 s4details
#280.05 s4details
#290.12 s4details
#300.07 s4details
#310.09 s4details
#320.09 s4details
#330.03 s4details
#340.03 s4details

Code

 
def sum_lists(first_list, second_list):
    return [x + y for x, y in zip(first_list, second_list)]
 
 
k = int(input().split()[1])
nums = [int(n) for n in input().split()]#[int(n) for n in "43251"]#list(range(1, 102))[::-1]#
###
 
mapper = []
for i in range(1, k, 2):
    mapper.append(i)
 
mapper = ([k-m for m in mapper] + [0] * (k % 2) + [-(k-m) for m in mapper][::-1])
###
 
num_moves = []
for n in range(len(nums)):
    num_moves.append((nums[n]-1 - n))
 
###


past_moves = 0
fin_moves = []
 
last_nums = []
best = 0, 0
while True:
 
    stop = min(best[0]+k*2+1, len(num_moves)-k+1) if last_nums != [] else len(num_moves)-k+1
    for i in range(max(best[0]-k-1, 0), stop):

        s = num_moves[i:i+k//2] + num_moves[i+k//2+k%2:i+k]
        print(s, num_moves[i])
        temp = [abs(v) for v in sum_lists(s[::-1], mapper)]
        d1 = sum([abs(v)**2 for v in s])
        d2 = sum([abs(v)**2 for v in temp])
        d = d1 - d2
        if(best[1] < d):
            best = i, d

    best = best[0], 0
    num_moves = num_moves[:best[0]] + sum_lists(num_moves[best[0]:best[0]+k][::-1], mapper) + num_moves[best[0]+k:]
    #print(num_moves)
    past_moves += 1
    fin_moves.append(best[0]+1)
 
    id = hash(str(num_moves))
    
    if(id in last_nums):
        print("NO")
        exit()
 
    last_nums.append(id)
 
    if(num_moves == [0]*len(num_moves)):
        break
 
 
print("YES")
print(len(fin_moves))
print(" ".join(map(str, fin_moves)))

Test details

Test 1

Group: 1

Verdict:

input
5 2
1 2 3 4 5

correct output
YES
0

user output
[0, 0] 0
[0, 0] 0
[0, 0] 0
[0, 0] 0
[1, -1] 1
...

Test 2

Group: 1

Verdict:

input
5 2
2 1 3 4 5

correct output
YES
1
1

user output
[1, -1] 1
[-1, 0] -1
[0, 0] 0
[0, 0] 0
YES
...

Test 3

Group: 1

Verdict:

input
20 2
6 20 18 2 16 13 19 17 8 14 11 ...

correct output
YES
366
2 3 4 5 6 7 8 9 10 11 12 13 14...

user output
[5, 18] 5
[18, 15] 18
[15, -2] 15
[-2, 11] -2
[11, 7] 11
...
Truncated

Test 4

Group: 1

Verdict:

input
100 2
100 92 62 88 12 7 43 31 19 72 ...

correct output
YES
2876
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
[99, 90] 99
[90, 59] 90
[59, 84] 59
[84, 7] 84
[7, 1] 7
...
Truncated

Test 5

Group: 1

Verdict:

input
100 2
100 99 98 97 96 95 94 93 92 91...

correct output
YES
5248
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
[99, 97] 99
[97, 95] 97
[95, 93] 95
[93, 91] 93
[91, 89] 91
...
Truncated

Test 6

Group: 2

Verdict:

input
5 3
1 2 3 4 5

correct output
YES
0

user output
[0, 0] 0
[0, 0] 0
[0, 0] 0
[2, -2] 2
[0, 0] 0
...

Test 7

Group: 2

Verdict:

input
5 3
3 5 4 1 2

correct output
NO

user output
[2, 1] 2
[3, -3] 3
[1, -3] 1
[2, 1] 2
[-1, 1] -1
...
Truncated

Test 8

Group: 2

Verdict:

input
5 3
5 2 1 4 3

correct output
YES
8
1 2 1 3 1 2 3 1

user output
[4, -2] 4
[0, 0] 0
[-2, -2] -2
[0, 2] 0
[0, 0] 0
...

Test 9

Group: 2

Verdict:

input
20 3
19 14 1 18 3 4 11 20 13 6 17 8...

correct output
YES
52
8 10 12 14 16 18 1 3 5 7 9 11 ...

user output
[18, -2] 18
[12, 14] 12
[-2, -2] -2
[14, -2] 14
[-2, 4] -2
...
Truncated

Test 10

Group: 2

Verdict:

input
20 3
9 6 13 18 5 10 3 2 7 20 1 4 19...

correct output
YES
50
10 12 14 16 18 13 15 17 4 6 8 ...

user output
[8, 10] 8
[4, 14] 4
[10, 0] 10
[14, 4] 14
[0, -4] 0
...
Truncated

Test 11

Group: 2

Verdict:

input
500 3
53 52 21 76 25 142 5 4 83 176 ...

correct output
YES
15194
334 336 338 340 342 344 346 34...

user output
[52, 18] 52
[50, 72] 50
[18, 20] 18
[72, 136] 72
[20, -2] 20
...
Truncated

Test 12

Group: 2

Verdict:

input
500 3
51 44 147 172 1 28 27 82 233 1...

correct output
YES
15565
366 368 370 372 374 376 378 38...

user output
[50, 144] 50
[42, 168] 42
[144, -4] 144
[168, 22] 168
[-4, 20] -4
...
Truncated

Test 13

Group: 2

Verdict:

input
500 3
75 46 179 62 221 14 67 154 89 ...

correct output
YES
15920
454 456 458 460 462 464 466 46...

user output
[74, 176] 74
[44, 58] 44
[176, 216] 176
[58, 8] 58
[216, 60] 216
...
Truncated

Test 14

Group: 2

Verdict:

input
500 3
161 54 285 12 71 142 111 94 97...

correct output
YES
15931
408 410 412 414 416 418 420 42...

user output
[160, 282] 160
[52, 8] 52
[282, 66] 282
[8, 136] 8
[66, 104] 66
...
Truncated

Test 15

Group: 2

Verdict:

input
500 3
122 260 455 113 315 276 433 43...

correct output
NO

user output
[121, 452] 121
[258, 109] 258
[452, 310] 452
[109, 270] 109
[310, 426] 310
...
Truncated

Test 16

Group: 2

Verdict:

input
500 3
499 500 497 498 495 496 493 49...

correct output
YES
62264
2 4 6 8 10 12 14 16 18 20 22 2...

user output
[498, 494] 498
[498, 494] 498
[494, 490] 494
[494, 490] 494
[490, 486] 490
...
Truncated

Test 17

Group: 3

Verdict:

input
5 4
1 2 3 4 5

correct output
YES
0

user output
[0, 0, 0, 0] 0
[0, 0, 0, 0] 0
[3, 1, -1, -3] 3
[1, -1, -3, 0] 1
YES
...

Test 18

Group: 3

Verdict:

input
5 4
5 1 2 3 4

correct output
YES
4
1 2 1 2

user output
[4, -1, -1, -1] 4
[-1, -1, -1, -1] -1
[2, 0, -2, 1] 2
[0, -2, 1, -1] 0
[4, -1, -1, -1] 4
...
Truncated

Test 19

Group: 3

Verdict:

input
500 4
58 14 107 124 4 113 24 290 56 ...

correct output
YES
15698
389 392 395 398 401 404 407 41...

user output
[57, 12, 104, 120] 57
[12, 104, 120, -1] 12
[104, 120, -1, 107] 104
[120, -1, 107, 17] 120

...
Truncated

Test 20

Group: 3

Verdict:

input
500 4
113 187 278 242 23 67 48 298 3...

correct output
YES
15004
480 481 480 482 485 488 491 49...

user output
[112, 185, 275, 238] 112
[185, 275, 238, 18] 185
[275, 238, 18, 61] 275
[238, 18, 61, 41] 

...
Truncated

Test 21

Group: 3

Verdict:

input
500 4
5 233 199 35 213 354 11 134 30...

correct output
YES
16770
458 461 464 467 470 473 476 47...

user output
[4, 231, 196, 31] 4
[231, 196, 31, 208] 231
[196, 31, 208, 348] 196
[31, 208, 348, 4] 31
[
...
Truncated

Test 22

Group: 3

Verdict:

input
500 4
169 47 21 137 57 138 360 147 4...

correct output
YES
15889
497 371 372 371 373 376 379 38...

user output
[168, 45, 18, 133] 168
[45, 18, 133, 52] 45
[18, 133, 52, 132] 18
[133, 52, 132, 353] 133

...
Truncated

Test 23

Group: 3

Verdict:

input
500 4
493 409 291 313 156 443 496 40...

correct output
YES
22886
480 481 480 482 485 488 491 49...

user output
[492, 407, 288, 309] 492
[407, 288, 309, 151] 407
[288, 309, 151, 437] 288
[309, 151, 437,

...
Truncated

Test 24

Group: 3

Verdict:

input
500 4
137 99 100 226 326 298 140 340...

correct output
NO

user output
[136, 97, 97, 222] 136
[97, 97, 222, 321] 97
[97, 222, 321, 292] 97
[222, 321, 292, 133] 2

...
Truncated

Test 25

Group: 3

Verdict:

input
500 4
500 499 498 497 496 495 494 49...

correct output
YES
41458
1 2 1 2 5 8 11 14 17 20 23 26 ...

user output
[499, 497, 495, 493] 499
[497, 495, 493, 491] 497
[495, 493, 491, 489] 495
[493, 491, 489,

...
Truncated

Test 26

Group: 4

Verdict:

input
5 5
1 2 3 4 5

correct output
YES
0

user output
[0, 0, 0, 0] 0
[4, 2, -2, -4] 4
YES
2
1 1

Test 27

Group: 4

Verdict:

input
5 5
5 4 3 2 1

correct output
YES
1
1

user output
[4, 2, -2, -4] 4
YES
1
1

Test 28

Group: 4

Verdict:

input
500 5
145 26 285 154 147 314 141 40 ...

correct output
YES
13786
216 220 224 228 232 236 240 24...

user output
[144, 24, 150, 142] 144
[24, 282, 142, 308] 24
[282, 150, 308, 134] 282
[150, 142, 134, 32

...
Truncated

Test 29

Group: 4

Verdict:

input
500 5
137 22 399 292 249 6 51 224 42...

correct output
YES
13465
456 460 464 468 472 476 480 48...

user output
[136, 20, 288, 244] 136
[20, 396, 244, 0] 20
[396, 288, 0, 44] 396
[288, 244, 44, 216] 288

...
Truncated

Test 30

Group: 4

Verdict:

input
500 5
153 52 85 100 329 60 433 468 4...

correct output
YES
13642
377 378 377 380 384 388 392 39...

user output
[152, 50, 96, 324] 152
[50, 82, 324, 54] 50
[82, 96, 54, 426] 82
[96, 324, 426, 460] 96
[3
...
Truncated

Test 31

Group: 4

Verdict:

input
500 5
267 326 95 108 189 32 291 366 ...

correct output
YES
14639
213 214 213 216 220 224 228 23...

user output
[266, 324, 104, 184] 266
[324, 92, 184, 26] 324
[92, 104, 26, 284] 92
[104, 184, 284, 358]

...
Truncated

Test 32

Group: 4

Verdict:

input
500 5
15 450 272 80 321 101 247 438 ...

correct output
NO

user output
[14, 448, 76, 316] 14
[448, 269, 316, 95] 448
[269, 76, 95, 240] 269
[76, 316, 240, 430] 7

...
Truncated

Test 33

Group: 4

Verdict:

input
499 5
497 498 499 496 495 494 493 49...

correct output
YES
30886
3 7 11 15 19 23 27 31 35 39 43...

user output
[496, 496, 492, 490] 496
[496, 496, 490, 488] 496
[496, 492, 488, 486] 496
[492, 490, 486,

...
Truncated

Test 34

Group: 4

Verdict:

input
500 5
499 500 497 498 495 496 493 49...

correct output
YES
30919
1 4 8 12 16 20 24 28 32 36 40 ...

user output
[498, 498, 494, 490] 498
[498, 494, 490, 490] 498
[494, 494, 490, 486] 494
[494, 490, 486,

...
Truncated