問題文
1,ldots,N の順列 p=(p1,ldots,pN) が与えられます。 あなたは、次の 2 種類の操作を好きな順序で繰り返し行うことができます。
- コスト A を支払う。 整数 l と r (1leql<rleqN) を自由に選び、(pl,ldots,pr) を左にひとつシフトする。 すなわち、pl,pl+1,ldots,pr−1,pr をそれぞれ pl+1,pl+2,ldots,pr,pl へ置き換える。
- コスト B を支払う。 整数 l と r (1leql<rleqN) を自由に選び、(pl,ldots,pr) を右にひとつシフトする。 すなわち、pl,pl+1,ldots,pr−1,pr をそれぞれ pr,pl,ldots,pr−2,pr−1 へ置き換える。
p を昇順にソートするために必要な総コストの最小値を求めてください。
制約
- 入力はすべて整数である。
- 1leqNleq5000
- 1leqA,Bleq109
- (p1ldots,pN) は 1,ldots,N の順列である。
入力
入力は以下の形式で標準入力から与えられる。
N A B
p1 cdots pN
出力
p を昇順にソートするために必要な総コストの最小値を出力せよ。
入力例 1
3 20 30
3 1 2
出力例 1
20
(p1,p2,p3) を左にひとつシフトすると、p=(1,2,3) となります。
入力例 2
4 20 30
4 2 3 1
出力例 2
50
例えば、次のように操作を行えばよいです。
- (p1,p2,p3,p4) を左にひとつシフトする。 すると、p=(2,3,1,4) となる。
- (p1,p2,p3) を右にひとつシフトする。 すると、p=(1,2,3,4) となる。
このとき、総コストは 20+30=50 です。
入力例 3
1 10 10
1
出力例 3
0
入力例 4
4 1000000000 1000000000
4 3 2 1
出力例 4
3000000000
入力例 5
9 40 50
5 3 4 7 6 1 2 9 8
出力例 5
220