atcoder#AGC011F. [AGC011F] Train Service Planning

[AGC011F] Train Service Planning

配点 : 17001700

問題文

高橋王国には,11 本の鉄道路線が走っています. この路線は NN 個の区間 11, 22, ..., NNN+1N+1 個の駅 00, 11, ..., NN からなり,区間 ii は駅 i1i-1 と駅 ii を直接結んでいます. 列車が区間 ii を走行するには,方向によらず,ちょうど AiA_i 分かかります. また,NN 個の区間のそれぞれは,区間全体にわたって複線であるか,区間全体にわたって単線であるかのどちらかです. Bi=1B_i = 1 のときは区間 ii は単線,Bi=2B_i = 2 のときは区間 ii は複線です. 複線の区間では両方向の列車がすれ違うことができますが,単線の区間ではすれ違うことはできません. ただし,列車が駅にいる場合は列車同士がすれ違うことができます.

すぬけ君は,この路線に図のように KK 分間隔で列車を走らせようとしています.ここで,太線は列車が走行している位置を表します. (詳しくは,入出力例 1 を見てください.)

このとき,駅 00 から駅 NN までの列車の所要時間と,駅 NN から駅 00 までの列車の所要時間の合計の最小値を求めてください. この問題の制約の下,適切な列車の走らせ方が存在するとき,この最小値は必ず整数になることが証明できます.

なお,列車の発車時刻や到着時刻が満たすべき条件は,厳密に書くと下のようになります.

  • どの列車も,駅 00 を出発して駅 NN まで向かうか,駅 NN を出発して駅 00 まで向かうかのいずれかである.
  • どの列車も,区間 ii をちょうど AiA_i 分かけて走行する.例えば,駅 NN 行きのある列車が駅 i1i-1 を時刻 tt に出発したなら,この列車は駅 ii にちょうど時刻 t+Ait+A_i に到着する.
  • ある駅で,時刻 ss に駅 NN 行きの列車が到着し,その列車が時刻 tt に発車したとすると,駅 NN 行きの次の列車は時刻 s+Ks+K に到着し,時刻 t+Kt+K に発車する.また,駅 NN 行きの前の列車は時刻 sKs-K に到着し,時刻 tKt-K に発車する.駅 00 行きの列車についても同様である.
  • 異なる方向の列車が,同時に同じ単線区間(両端の駅を除く)を走行していてはならない.

制約

  • 1N1000001 \leq N \leq 100000
  • 1K1091 \leq K \leq 10^9
  • 1Ai1091 \leq A_i \leq 10^9
  • AiA_i は整数
  • Bi=1B_i = 1 または Bi=2B_i = 2

部分点

  • 500500 点分のテストケースでは,すべての区間が単線である.すなわち,Bi=1B_i = 1 が成り立つ.
  • 別の 500500 点分のテストケースでは,N200N \leq 200 が成り立つ.

入力

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

NN KK

A1A_1 B1B_1

A2A_2 B2B_2

:

ANA_N BNB_N

出力

00 から駅 NN までの列車の所要時間と,駅 NN から駅 00 までの列車の所要時間の合計の最小値を表す整数を出力せよ. ただし,条件をすべて満たすように列車を走らせることが不可能な場合は,1-1 を出力せよ.

3 10
4 1
3 1
4 1
26

例えば,下図に示すように列車を走らせると,所要時間の合計が 2626 分になります.

例えば,赤線で示した列車は,時刻 00 に駅 00 を出発し,時刻 44 に駅 11 に到着し,時刻 55 に駅 11 を出発し,時刻 88 に駅 22 に到着します.

1 10
10 1
-1
6 4
1 1
1 1
1 1
1 1
1 1
1 1
12
20 987654321
129662684 2
162021979 1
458437539 1
319670097 2
202863355 1
112218745 1
348732033 1
323036578 1
382398703 1
55854389 1
283445191 1
151300613 1
693338042 2
191178308 2
386707193 1
204580036 1
335134457 1
122253639 1
824646518 2
902554792 2
14829091348