B17 - Frog 1 with Restoration
Editorial
/
Time Limit: 1 sec / Memory Limit: 1024 MB
配点 : 1000 点
問題文
N 個の足場があります。足場には 1, 2, …, N と番号が振られています。各 i (1≤i≤N) について、足場 i の高さは h_i です。
最初、足場 1 にカエルがいます。カエルは次の行動を何回か繰り返し、足場 N まで辿り着こうとしています。
- 足場 i にいるとき、足場 i+1 または i+2 へジャンプする。このとき、ジャンプ先の足場を j とすると、コスト |h_i - h_j| を支払う。
カエルが足場 N に辿り着くまでに支払うコストの総和が最小になる移動方法を 1 つ出力するプログラムを作成してください。
制約
- 2 ≤ N ≤ 100\,000
- 1 ≤ h_i ≤ 10\,000 (1 ≤ i ≤ N)
- 入力される値はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
N h_1 h_2 \cdots h_N
出力
足場 P_1 → 足場 P_2 → ・・・ → 足場 P_K という経路で移動する場合、以下の形式で出力してください。特に、P_1=1、P_K=N でなければならないことに注意してください。
K P_1 P_2 \cdots P_K
入力例 1
4 10 30 40 20
出力例 1
3 1 2 4
入力例 2
2 10 10
出力例 2
2 1 2
入力例 3
6 30 10 60 10 60 50
出力例 3
4 1 3 5 6