문제
層からなるダンジョンがあり,ダンジョン内には 人のプレイヤーがいる.ダンジョンの階層には入口から近い順に第 層から第 層までの番号が付いている.また,プレイヤーには から までの番号が付いている.
ダンジョンのある階層から次の階層へ進むには体力を要する.プレイヤーは,第 層()から第 層に進む際に体力を 消費する.また,このダンジョンは一方通行であり,可能な階層間の移動は第 層()から第 層への移動のみである.
第 層から第 層までの各階層には つの回復の泉がある.第 層()にある回復の泉では,プレイヤーは 枚のコインを消費することで体力を 回復させることができる.回復の泉は,コインがある限り何回でも使用することができる.ただし,プレイヤーの体力には上限があり,回復の泉を使っても,体力がその上限を超えることはない.
プレイヤー ()は現在第 層にいる.現在の体力は であり,体力の上限は である.プレイヤー は,体力を 未満にすることなく第 層まで進もうとしている.そのためには何枚のコインが必要であろうか.
ダンジョンの情報と各プレイヤーの情報が与えられたとき,各プレイヤーが体力を 未満にせずに目標の階層まで進むことが可能かを判定し,可能な場合には必要なコインの枚数の最小値を求めるプログラムを作成せよ.
입력
入力は以下の形式で標準入力から与えられる.入力される値はすべて整数である.
$N$ $M$
$A_1$ $\ldots$ $A_N$
$B_1$ $\ldots$ $B_N$
$S_1$ $T_1$ $U_1$
$\vdots$
$S_M$ $T_M$ $U_M$
출력
標準出力に 行で出力せよ.第 行目()にはプレイヤー が第 層まで進むために必要なコインの枚数の最小値を出力せよ.ただし,プレイヤー が第 層まで進むことができない場合は を出力せよ.
예제 입력 1
5 4
3 4 1 1 4
2 5 1 2 1
1 6 3
1 6 4
3 5 1
2 5 9
예제 출력 1
-1
29
3
22
예제 입력 2
10 10
1 8 9 8 1 5 7 10 6 6
10 10 2 8 10 3 9 8 3 7
2 11 28
5 11 28
7 11 28
1 11 18
3 11 18
8 11 18
4 11 11
6 11 11
10 11 11
9 11 5
예제 출력 2
208
112
179
248
158
116
234
162
42
-1
예제 입력 3
20 20
2 3 2 11 4 6 9 15 17 14 8 17 3 12 20 4 19 8 4 5
19 3 18 2 13 7 5 19 10 1 12 8 1 15 20 1 13 2 18 6
12 15 67
7 15 18
16 17 14
9 21 97
1 19 43
3 18 31
16 20 70
7 20 28
1 16 61
3 5 69
9 10 15
2 13 134
11 19 23
16 20 14
5 21 16
15 20 11
7 11 54
7 16 16
13 17 10
3 15 135
예제 출력 3
151
591
4
284
339
517
35
581
254
58
-1
178
519
-1
-1
-1
219
-1
-1
214
제한
- .
- .
- ().
- ().
- ().
- ().
서브태스크
- ( 점) ,.
- ( 점) .
- ( 점) ().
- ( 점) 追加の制約はない.
プレイヤー は,体力の上限が であるため,第 層から第 層へ進むことができない.そのため, 行目の出力は となる.
一方で,プレイヤー は体力の上限が であるため,以下のようにして第 層まで進むことができる.
- 第 層でコインを 枚使って体力を にし,第 層に進む.このとき,体力は となる.
- 第 層でコインを 枚使って体力を にし,第 層に進む.このとき,体力は となる.
- 第 層でコインを 枚使って体力を にし,第 層に進む.このとき,体力は となる.
- 第 層ではコインを使わずに,第 層に進む.このとき,体力は となる.
- 第 層でコインを 枚使って体力を にし,第 層に進む.このとき,体力は となる.
合計 枚のコインを使う. 枚未満のコインで第 層まで進むことはできないので, 行目の出力は となる.
この入力例は小課題 の制約を満たしている.
코드를 제출하려면 로그인이 필요합니다.
로그인