A17 - Dungeon 2 Editorial /

Time Limit: 1 sec / Memory Limit: 1024 MB

配点 : 1000

問題文

あるダンジョンには N 個の部屋があり、1 から N までの番号が付けられています。このダンジョンは一方通行であり、通路を介して 1 つ先または 2 つ先の部屋に移動することができます。各通路における移動時間は以下の通りです。

  • 部屋 i - 1 から部屋 i に向かう通路を通るのに A_i 分 (2 ≤ i ≤ N) かかる。
  • 部屋 i - 2 から部屋 i に向かう通路を通るのに B_i 分 (3 ≤ i ≤ N) かかる。

太郎君が部屋 1 から部屋 N最短時間で移動する方法1 つ出力するプログラムを作成してください。

制約

  • 3 ≤ N ≤ 100\,000
  • 1 ≤ A_i ≤ 100 (2 ≤ i ≤ N)
  • 1 ≤ B_i ≤ 100 (3 ≤ i ≤ N)
  • 入力される値はすべて整数である。

入力

入力は以下の形式で標準入力から与えられる。

N
A_2 A_3 A_4 \cdots A_N
B_3 B_4 \cdots B_N

出力

部屋 P_1 → 部屋 P_2 → ・・・ → 部屋 P_K という経路で移動する場合、以下の形式で出力してください。特に、P_1=1P_K=N でなければならないことに注意してください(詳しくは入出力例へ)。

K
P_1 P_2 \cdots P_K

入力例 1

5
2 4 1 3
5 3 3

出力例 1

4
1 2 4 5

部屋 1 \to 2 \to 4 \to 5 という経路や、部屋 1 \to 3 \to 5 という経路を通ると、8 分でゴールにたどり着けます。


入力例 2

10
1 19 75 37 17 16 33 18 22
41 28 89 74 98 43 42 31

出力例 2

7
1 2 4 5 6 8 10