#54021: 題目好像有問題


tjmmy0123456789@gmail.com (12345)


題目沒說遇到相同距離時,該輸出哪一個停車位。

            if parkdp[i + 1] > dis :

            if parkdp[i + 1] >= dis :

就過了

from math import inf
while True:
    n = int(input())
    if n == 0:
        break
    park = [0] + [int(x) for x in input().split()] 
    parkdp = [0] + [inf for _ in range(n)] 
    dp = [[0] for _ in range(n+1)]
    for i in range(0,n):
        k = i
        while True:
            dis = (200 - park[i+1] + park[k]) ** 2 + parkdp[k]
            if parkdp[i + 1] >= dis :
                parkdp[i + 1] = dis 
                dp[i+1] = dp[k] + [i + 1]  
            if k == 0 :
                break  
            k -= 1
    print(" ".join(map(str,dp[-1])))