题目描述
Alice 把 2n 张扑克牌牌面朝下叠成一摞,并记住了从上到下每张扑克牌的种类(使用一个字符串表示)。之后,她将这摞牌交给 Bob 进行洗牌。
Bob 接过牌后,采用一种特殊的洗牌方式:
- 首先,他从上到下取出前 n 张牌划分为左堆,剩下的 n 张牌划分为右堆;
- 之后,他设定一个新的牌堆,并做 2n 次操作。每次操作中,他随机从左堆或右堆的顶部取出一张牌,并放到新的牌堆的顶部。
虽然 Bob 费尽心思洗牌,但 Alice 依然能记住洗好的牌中每张牌是来自左堆还是右堆。她用一个字符串 f(下标从 1 开始)记录了这个信息,其中:
- fi=L 表示新牌堆中从上到下第 i 张牌来自左堆;
- fi=R 表示新牌堆中从上到下第 i 张牌来自右堆。
接下来,Bob 按顺序发牌:从洗好的牌堆顶部开始,他交替地把每张牌发给 Alice 和自己,第一张给 Alice,第二张给自己,第三张再给 Alice,以此类推。
你的任务是计算出 Alice 最终拿到的所有牌,并按她拿到牌的顺序输出。
输入格式
输入共三行。
第一行一个整数 n,代表扑克牌一共有 2n 张。
第二行 2n 个字符串,代表初始时从上到下每张扑克牌的种类。相邻字符串之间使用一个逗号隔开。
第三行一个长度为 2n 的字符串 f,由 L,R 组成,代表 Alice 记住的洗牌顺序。
输出格式
输出 n 行,每行一个字符串,代表 Alice 拿到的所有牌。你需要按照 Alice 拿到牌的顺序从前到后输出。
提示
样例 1 解释
初始时牌堆中牌的种类从上到下依次为:A1,B2,C3,D4,E5,F6,G7,H8。
Bob 将其分为左右两堆,两堆中的牌的种类从上到下依次为:
- 左堆:A1,B2,C3,D4;
- 右堆:E5,F6,G7,H8。
在洗牌过程中,左堆、右堆、新的牌堆中从上到下牌的种类如下表所示:
操作次数 |
左堆(从上到下) |
右堆(从上到下) |
新的牌堆(从上到下) |
初始 |
A1,B2,C3,D4 |
E5,F6,G7,H8 |
空 |
1(L) |
B2,C3,D4 |
A1 |
2(R) |
F6,G7,H8 |
E5,A1 |
3(R) |
G7,H8 |
F6,E5,A1 |
4(L) |
C3,D4 |
B2,F6,E5,A1 |
5(R) |
H8 |
G7,B2,F6,E5,A1 |
6(L) |
D4 |
C3,G7,B2,F6,E5,A1 |
7(R) |
空 |
H8,C3,G7,B2,F6,E5,A1 |
8(L) |
空 |
D4,H8,C3,G7,B2,F6,E5,A1 |
最终新的牌堆为:D4,H8,C3,G7,B2,F6,E5,A1。
按照发牌规则,第 1,3,5,7 张牌应当给予 Alice,因此 Alice 最终拿到的牌从前到后依次是 D4,C3,B2,E5。
数据规模与约定
本题共 10 个测试点。对于 100% 的数据,1≤n≤100。表示牌的种类字符串长度不超过 5,且仅会出现大小写字母和/或数字。f 中 L 和 R 的出现次数相同。
测试点编号 |
n |
特殊性质 |
1 |
=1 |
无 |
2,3 |
≤10 |
4 |
≤100 |
所有代表牌种类的字符串相同 |
5 |
f 的前 n 个字符一定是 L,后 n 个字符一定是 R |
6 |
f 的前 n 个字符一定是 R,后 n 个字符一定是 L |
7 |
f 为 L,R 交替构成(即 f1,f3,f5,⋯=L,f2,f4,f6,⋯=R) |
8∼10 |
无 |