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=1P_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