atcoder#ARC063B. [ABC047D] 高橋君と見えざる手
[ABC047D] 高橋君と見えざる手
配点 : 点
問題文
個の町が一直線上に並んでいます。行商人の高橋君は町 から出発し、リンゴの売買をしながら町 へと向かいます。
はじめ高橋君は町 におり、リンゴを つも持っていません。高橋君は次のいずれかの行動を繰り返し行います。
- 移動: 町 () にいるとき、町 へ移動する。
- リンゴの売買: リンゴを好きな個数だけ売買する。ここで、町 () ではリンゴの買値も売値もともに 円とする。ここで は相異なる整数です。
つの町で売買するリンゴの個数に制限はありませんが、旅の中で売買するリンゴの個数は合計で (買う個数と売る個数を合わせて) 個以下にしなくてはなりません。
高橋君は旅の利益、すなわちリンゴを売った代金から買った代金を引いた値を最大にするように旅をするとします。旅が終わったときに持っていたリンゴの価値は考えず、旅の中で売買した金額だけを考えます。
この旅に先立って、青木君は任意の町 に対して を好きな非負整数 に変えるという操作を好きなだけ行うことができます。ただし、この操作は行うごとに のコストがかかります。操作後には異なる町の間でリンゴの値段が同じになっていても構いません。
青木君の目的はできるだけ少ない合計コストの操作で高橋君の利益を少なくとも 円下げることです。合計コストの最小値を求めてください。
ただし、元の状態で高橋君が 円以上の利益を上げられることは仮定して構いません。
制約
- ()
- は相異なる
- 入力の状態では高橋君は 円以上の利益を上げられることが保証される
入力
入力は以下の形式で標準入力から与えられる。
出力
高橋君の収益を少なくとも 円下げるために必要な合計コストの最小値を出力せよ。
3 2
100 50 200
1
この入力の状態では、高橋君は次のようにして最大の利益である 円を達成することができます。
- 町 から町 へ移動する。
- 町 で 円を支払い、リンゴを 個買う。
- 町 から町 へ移動する。
- 町 で 円でリンゴを 個売る。
たとえば、青木君が町 のリンゴの値段を 円から 円に変えると、高橋君はどのようにしても 円の利益を上げることができなくなります。すなわち、コスト で高橋君の利益を少なくとも 円下げることが可能であり、答えは となります。
他にも、町 のリンゴの値段を 円から 円に変えることでもコスト で高橋君の利益を下げることが可能です。
5 8
50 30 40 10 20
2
10 100
7 10 4 5 9 3 6 8 2 1
2