#arc0103. [arc010_3]積み上げパズル

[arc010_3]積み上げパズル

問題文

高橋君はある日、以下のようなゲームで遊ぶことにしました。
mm 色のブロックが nn 個、11 つずつ順番に落ちてきます。
11 つ落ちてくるたびに、高橋君は落ちてきたそのブロックを取って山に積むか、積まずに捨てるか選べます。
ブロックを積む山は 11 つで、ブロックは必ず山の一番上に積まないといけません。
全てのブロックが落ちきった後、出来た山は以下のように評価されます。

  • 色ボーナス:色ごとに決められた得点が、山に含まれている個数分与えられます。
  • コンボボーナス:同じ色のブロックが xx 個続いて積まれている場合、コンボボーナス配点 YY に応じて Y×(x1)Y×(x-1) 点が与えられます。
  • 全色ボーナス:山の中に mm 色のブロックがそれぞれ 11 個以上含まれていると ZZ 点が与えられます。

落ちてくるブロックの種類と順番、またそれぞれ山を評価するための配点が与えられたとき、評価で得ることのできる最高得点を求めなさい。


入力

入力は以下の形式で標準入力から与えられる。nn mm YY ZZ c1c_1 p1p_1 c2c_2 p2p_2 :: :: cmc_m pmp_m b1b2‥‥bnb_1b_2 ‥‥ b_n

  • 11 行目に n,m,Y,Zn, m, Y, Z が半角スペースで区切られて与えられる。
    1. nn はブロックの個数で 1n5,0001≦n≦5,000 を満たす。
    2. mm はブロックの色の総数で 1m101≦m≦10 を満たす。
    3. YY はコンボボーナス配点で \-100Y100\-100≦Y≦100 を満たす。
    4. ZZ は全色ボーナス配点で \-10,000Z10,000\-10,000≦Z≦10,000 を満たす。
    5. n,m,Y,Zn, m, Y, Z は全て整数である。
  • 22 行目からの m+1m+1 行目までの mm 行で色ボーナスの配点がそれぞれ与えられる。
    1. cic_ii(1im)i(1≦i≦m) 番目に与えられるブロックの色である。
    2. pip_icic_i に対する色ボーナスの配点である。
    3. cic_i は英大文字(A-Z)、pip_i\-100pi100\-100≦p_i≦100 を満たす。
    4. 配点は重複して与えられない(xyx≠y ならば cxcyc_x≠c_y)
  • m+2m+2 行目には落ちてくるブロックの順序を表す長さ nn の文字列が与えられる。
    1. bjb_jj(1jn)j(1≦j≦n) 番目に落ちてくるブロックの色を表している。
    2. bjb_jc1,c2,...,cmc_1,c_2,...,c_m のいずれかである。

出力

評価で得ることのできる得点の最大値を標準出力に 11 行で出力せよ。
なお、最後には改行を出力せよ。


入力例 1


5 3 3 5
R 1
G 1
B 1
RGBRR

出力例 1


13
  • 全てのブロックを山に積むと、

    • 色ボーナス:どの色も配点が 11 点なので、11 点 × 55\= 5
    • コンボボ−ナス:Rが 22 個連続しているので、3×(21)=33×(2-1)=3
    • 全色ボーナス:全ての色が 11 つ以上山に積まれているので、55

    により、5+3+5=135+3+5=13 点が与えられます。

  • いずれかのブロックを捨てるとこの点数よりも低くなるので、答えは 1313 点です。


入力例 2


3 3 3 5
R 1
G 3
B 2
RBR

出力例 2


5
  • 全てのブロックを山に積むと、

    • 色ボーナス:11×2×2+2+2×1×14ˉ\=4
    • 連続していないのでコンボボーナス、Gが含まれていないので全色ボーナスはそれぞれ 00

    により、44 点です。

  • しかし、Bを捨ててRRを山に積むと、

    • 色ボーナス:11×2×22ˉ\=2
    • コンボボーナス:3×(21)=33×(2-1)=3

    で、55 点が最高得点です。


入力例 3


8 3 5 3
R 1
G 1
B 1
RRGRRBRR

出力例 3


31
  • (a)(a) のように順に 88 個のブロックが落ちてきます。
  • ブロックを全部山に積むと、図 (b)(b) のように、22 個のコンボが 33 組できます。
  • また、全色ボーナスもつくので、11 点 × 88 個 + 55×(21)×3× (2-1) × 3\+3\+ 3\= 26 点です。
  • しかし、図 (c)(c) のようにRのみを山に積むと、11 点 × 66 個 + 55×(61)+0× (6-1) + 0\= 31 点になります。
  • Rだけ山に積むとき最高得点となり、3131 が答えです。


入力例 4


8 3 5 3
R 1
G 100
B 1
RRGRRBRR

出力例 4


126
  • 全部積んだ場合(図 (a)(a)):107107 点 + 55×(21)×3× (2-1) × 3\+3\+ 3\= 125
  • Rのみを積んだ場合(図 (b)(b)):66 点 + 55×(61)+0× (6-1) + 0\= 31
  • B以外を積んだ場合(図 (c)(c)):106106 点 + 55×(21)+(41)+0× \\{(2-1) + (4-1)\\} + 0\= 126
  • したがって、最高得点は 126126 点です。