Submission #14453556


Source Code Expand

import sys
sys.setrecursionlimit(10**6)

N, K = map(int, input().split())
h = list(map(int, input().split()))
INF = 10**9
dp = [INF] * N

def solve(n):
    if dp[n] < INF:
        return dp[n]

    if n == 0:
        dp[n] = 0
    elif n == 1:
        dp[n] = abs(h[0] - h[1])
    else:
        for i in range(1, K+1):
            if n - i < 0:
                break
            if dp[n - i] < INF:
                cost = dp[n - i] + abs(h[n - i] - h[n])
            else:
                cost = solve(n - i) + abs(h[n - i] - h[n])
            dp[n] = min(dp[n], cost)

    return dp[n]

print(solve(N-1))

Submission Info

Submission Time
Task B - Frog 2
User maebaru
Language PyPy3 (7.3.0)
Score 100
Code Size 633 Byte
Status AC
Exec Time 473 ms
Memory 205876 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 16
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11
Case Name Status Exec Time Memory
0_00 AC 69 ms 62020 KiB
0_01 AC 59 ms 61900 KiB
0_02 AC 55 ms 61988 KiB
0_03 AC 54 ms 62040 KiB
1_00 AC 61 ms 62008 KiB
1_01 AC 59 ms 61828 KiB
1_02 AC 395 ms 203640 KiB
1_03 AC 436 ms 205876 KiB
1_04 AC 392 ms 203728 KiB
1_05 AC 400 ms 204232 KiB
1_06 AC 405 ms 205536 KiB
1_07 AC 413 ms 205332 KiB
1_08 AC 424 ms 205532 KiB
1_09 AC 433 ms 205800 KiB
1_10 AC 451 ms 205012 KiB
1_11 AC 473 ms 205216 KiB