atcoder#ASAPOROB. 圧縮
圧縮
题目描述
高橋君は 項からなる数列 を拾いました。数列を全部持ち帰るのは大変なので、高橋君は圧縮して一つの数にすることに決めました。
圧縮は 回のステップからなり、各ステップごとに今ある数列を、長さが 短い数列に圧縮します。ステップでの操作を表す文字列を として、今ある数列を とするとき、 回目のステップでは以下の操作を行います。
- の 文字目が
M
のとき、 として、数列を に圧縮する - の 文字目が
m
のとき、 として、数列を に圧縮する
さて、高橋君は圧縮するステップの操作を表す文字列 を決めましたが、疲れていて実際に圧縮することができません。代わりに、圧縮して得られる数を求めてください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
圧縮して高橋君が得られる数を出力せよ。
题目大意
极简翻译
一串数组a(a1,a2...aN),一个由'M'和'm'组成的字符串S,并以S为指令对a进行压缩
对a数组进行以下操作(基于S的各个位置):
- 当S中的第i个字符为M时,令bi = max(ai,ai + 1)(1≤i≤K-1),并用(b1,b2,...,bK-1)替换当前序列。
- 当S中的第i个字符为m时,令bi = min(ai,ai + 1)(1≤i≤K-1),并用(b1,b2,…,bK-1)替换当前序列。
k是当前b串的大小
请给出最终剩下的数字。
4
1 2 3 4
MmM
3
5
3 4 2 2 1
MMmm
2
10
1 8 7 6 8 5 2 2 6 1
MmmmmMMMm
5
20
12 7 16 8 7 19 8 19 20 11 7 13 20 3 4 11 19 11 15 5
mMMmmmMMMMMMmMmmmMM
11
提示
制約
- は 文字からなり、各文字は
M
またはm
である。
部分点
- 点分のデータセットでは、ある が存在して、 の最初の 文字が
M
、その他の文字がm
である。すなわち、 はM...Mm...m
のようになる。 - 点分のデータセットでは、 の奇数文字目は
M
、偶数文字目はm
である。すなわち、 はMmMmMm...
のようになる。
Sample Explanation 1
最初の数列が なので、 - 回目のステップでは数列 に圧縮されます。 - 回目のステップでは数列 に圧縮されます。 - 回目のステップでは数列 に圧縮されます。 よって、求める数は です。