#2047. 【提高】洗牌2

【提高】洗牌2

题目描述

魔术师刘谦要洗牌,请你模拟洗牌过程。洗牌有两种操作:

  1. 弹牌:将牌组等分成前后两半,然后交错相插。例如当前牌为 1 2 3 4 5 6,弹牌后变为 1 4 2 5 3 6。
  2. 切牌:从牌堆中取出连续的一段,然后放到顶端。例如当前牌为 1 2 3 4 5 6,把第 2sim52sim 5 张切到顶端后变为 2 3 4 5 1 6。

给定初始牌堆和若干次操作,请输出所有操作完成后的牌序。

输入格式

第一行输入两个正整数 N,MN,M,表示牌堆中有 NN 张牌、共进行 MM 次操作。

第二行输入 NN 个正整数,表示初始牌堆中每张牌上的数字。

接下来 MM 行,每行描述一次操作:

  • 若第一个整数为 00,表示弹牌,本行只有这一个整数;
  • 若第一个整数为 11,后面跟两个正整数 b,eb,e,表示把当前位置第 bb 张到第 ee 张这一段牌切到顶端。

输出格式

输出一行 NN 个整数,表示 MM 次操作后的牌序。相邻两个整数之间用一个空格隔开,行末不要输出多余空格。

6 1
1 2 3 4 5 6
0
1 4 2 5 3 6

数据范围与提示

  • 1M51 \le M \le 5
  • 2N542 \le N \le 54,且 NN 为偶数。
  • 每张牌上的数字为不超过 5454 的正整数。
  • 读入操作时应先读第一个整数,再根据它是 00 还是 11 判断是否继续读取 b,eb,e

来源

数组问题