[AGC032D] Rotation Sort

题意翻译

给定一个排列, 你可以花费$A$使一个区间最左边的数跑到最右边, 或者花费$B$的代价使最右边到最左边, 求把整个序列变成升序的最少花费

题目描述

[problemUrl]: https://atcoder.jp/contests/agc032/tasks/agc032_d $ \{\ 1,\ \ldots,\ N\ \} $ の順列 $ p\ =\ (p_1,\ \ldots,\ p_N) $ が与えられます。 あなたは、次の 2 種類の操作を好きな順序で繰り返し行うことができます。 - コスト $ A $ を支払う。 整数 $ l $ と $ r $ ($ 1\ \leq\ l\ <\ r\ \leq\ N $) を自由に選び、$ (p_l,\ \ldots,\ p_r) $ を左にひとつシフトする。 すなわち、$ p_l,\ p_{l\ +\ 1},\ \ldots,\ p_{r\ -\ 1},\ p_r $ をそれぞれ $ p_{l\ +\ 1},\ p_{l\ +\ 2},\ \ldots,\ p_r,\ p_l $ へ置き換える。 - コスト $ B $ を支払う。 整数 $ l $ と $ r $ ($ 1\ \leq\ l\ <\ r\ \leq\ N $) を自由に選び、$ (p_l,\ \ldots,\ p_r) $ を右にひとつシフトする。 すなわち、$ p_l,\ p_{l\ +\ 1},\ \ldots,\ p_{r\ -\ 1},\ p_r $ をそれぞれ $ p_r,\ p_l,\ \ldots,\ p_{r\ -\ 2},\ p_{r\ -\ 1} $ へ置き換える。 $ p $ を昇順にソートするために必要な総コストの最小値を求めてください。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられる。 > $ N $ $ A $ $ B $ $ p_1 $ $ \cdots $ $ p_N $

输出格式


$ p $ を昇順にソートするために必要な総コストの最小値を出力せよ。

输入输出样例

输入样例 #1

3 20 30
3 1 2

输出样例 #1

20

输入样例 #2

4 20 30
4 2 3 1

输出样例 #2

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

说明

### 制約 - 入力はすべて整数である。 - $ 1\ \leq\ N\ \leq\ 5000 $ - $ 1\ \leq\ A,\ B\ \leq\ 10^9 $ - $ (p_1\ \ldots,\ p_N) $ は $ \{\ 1,\ \ldots,\ N\ \} $ の順列である。 ### Sample Explanation 1 $ (p_1,\ p_2,\ p_3) $ を左にひとつシフトすると、$ p\ =\ (1,\ 2,\ 3) $ となります。 ### Sample Explanation 2 例えば、次のように操作を行えばよいです。 - $ (p_1,\ p_2,\ p_3,\ p_4) $ を左にひとつシフトする。 すると、$ p\ =\ (2,\ 3,\ 1,\ 4) $ となる。 - $ (p_1,\ p_2,\ p_3) $ を右にひとつシフトする。 すると、$ p\ =\ (1,\ 2,\ 3,\ 4) $ となる。 このとき、総コストは $ 20\ +\ 30\ =\ 50 $ です。