第2回 ドワンゴからの挑戦状 予選 B - 積み鉛筆
直感を信じて投げてみたら通った。
B - 積み鉛筆
解説
$k_i, k_{i+1}$から$l_{i+1}$を決めたい。 条件より$k_i = {\rm max} \{ l_i, l_{i+1} \}$であるが、$k_i \lt l_{i+1}$であればこれに矛盾する。 同様に$k_{i+1} = {\rm max} \{ l_{i+1}, l_{i+2} \}$であるが、$k_{i+1} \lt l_{i+1}$であれば矛盾。 つまり$l_{i+1} \le {\rm min} \{ k_i, k_{i+1} \}$である。
ここから$l_{i+1} = {\rm min} \{ k_i, k_{i+1} \}$としてよいことは明らかであり、これが答え。両端は適当に。
実装
#!/usr/bin/env python3
n = int(input())
k = list(map(int,input().split()))
l = []
l.append(k[0])
for i in range(len(k)-1):
l.append(min(k[i], k[i+1]))
l.append(k[-1])
print(*l)