問題文
0
,1
からなる文字列Sが与えられます。Ai円支払うことにより、Siを(0
ならば1
に、1
ならば0
に)変更することができます。また、K個の区間[Lk,Rk]が与えられ、文字列T=SLkSLk+1…SRkについてf(T)×Bk円追加で支払う必要があります。
- f(T):=文字列Tを回文にするために必要な文字の最小変更回数
例えば、110101
を回文にするためには2,3文字目を変更する必要があるためf(110101)=2となります。
適切にSの文字を変更することにより、支払う金額を最小化してください。
制約
- 1≤N≤300
- 1≤K≤N(N−1)/2
- 0≤Ai,Bk≤109
- 1≤Lk<Rk≤N
- Si∈{0,1}
入力
入力はすべて整数である。
出力
支払う金額の最小値を一行に出力せよ。
サンプル
入力1
4 3
0011
3 3 0 9
1 4 3
2 3 0
2 4 9
3円支払い2文字目を1
に変更します。f(0111)=1,f(11)=0,f(111)=0となるので支払う合計金額は3+f(0111)×B1+f(11)×B2+f(111)×B3=6となります。
入力2
5 3
10011
8 2 8 0 5
1 2 8
2 3 2
4 5 0
2円支払い2文字目を1
に、0円支払い4文字目を0
に変更します。f(11)=0,f(10)=1,f(01)=1となるので支払う合計金額は2+0+f(11)×B1+f(10)×B2+f(01)×B3=4となります。
入力3
10 10
0001011001
5 3 2 14 3 0 13 1 20 1
1 8 3
2 3 1
2 5 1
2 8 7
3 4 0
3 8 7
5 7 10
5 9 0
6 7 5
8 9 9