测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A70449. 洗牌2

编程题 提高

题目描述

魔术师刘谦要洗牌了,请你写个程序来模拟洗牌的过程。

洗牌分弹牌和切牌两个操作:

弹牌——将牌组等分成两份,然后交错相插,如当前牌为 1 2 3 4 5 6 ,现在开始弹牌,先将牌分成 1 2 34 5 6 ,然后交错相插,变成 1 4 2 5 3 6

切牌——从牌堆里面拿出连续的一段,然后放到顶端。如当前牌为1 2 3 4 5 6,切完 25 之间的 4 张牌后变成 2 3 4 5 1 6

输入格式

第一行为两个正整数 NMN 表示牌堆里面有 N 张牌,M 表示共进行 M 次洗牌的操作。

第二行有 N 个正整数,代表 N 张牌上的数字,刘谦用的牌其实就是标有数字的卡片。

接下来 M 行,每行一个整数或者三个整数。

如果第一个数为 0 ,那么这一行就这只有一个数,表示弹牌。

如果第一个数为 1 ,那么后面跟着两个正整数 be ,表示把 be 这段牌切到顶端。

输出格式

输出 M 次操作后从第一张开始的每张牌上的数字。

相邻两数严格用一个空格隔开。

输入输出样例

输入 #1
10 5
46 21 22 1 20 46 50 7 42 19
1 4 8
1 4 4
1 4 7
0
0
输出 #1
46 22 1 21 7 42 20 50 46 19

说明/提示

## 思路

「洗牌2」先把数据放进一维数组,再遍历完成题面要求的统计或变换。

## 步骤

1. 读入 $n$ 和 $n$ 个元素。
2. 按题意遍历或多次扫描数组。
3. 输出处理后的结果。