34 lines
760 B
Python
34 lines
760 B
Python
force = [
|
|
[1,2,2,2,2],
|
|
[2,1,3,4,3],
|
|
[2,3,1,3,4],
|
|
[2,4,3,1,3],
|
|
[2,3,4,3,1]
|
|
]
|
|
|
|
seq = list(map(int, input().split()))
|
|
n = len(seq)
|
|
inf = float("inf")
|
|
dp = [[[inf]*5 for _ in range(5)] for _ in range(2)]
|
|
for i in range(5) :
|
|
for j in range(5) :
|
|
dp[1][i][j] = 0
|
|
|
|
cur_idx = 0
|
|
nxt_idx = 1
|
|
|
|
for step in range(n-1,-1, -1) :
|
|
target = seq[step]
|
|
if target == 0 :
|
|
continue
|
|
|
|
for l in range(5) :
|
|
for r in range(5) :
|
|
moveLeft = dp[nxt_idx][target][r] + force[l][target]
|
|
moveRight = dp[nxt_idx][l][target] + force[r][target]
|
|
dp[cur_idx][l][r] = min(moveLeft, moveRight)
|
|
|
|
cur_idx = 1 if cur_idx == 0 else 0
|
|
nxt_idx = 1 if cur_idx == 0 else 0
|
|
|
|
print(dp[nxt_idx][0][0]) |