1306 : 单链表的操作
Time Limit: 1 Sec Memory Limit: 256 MB Submitted: 67 Solved: 19Description
给两组数以及一系列操作,或者把前一组的某个数移出并插入到后一组的特定位置,或者反之. 最终按要求输出第一组数的一部分.
Input
第一行 \(1\leq n \leq 10^7\) 与 \(1 \leq m \leq 1000\) 表示两组数都为 \(n\) 个,并有 \(m\) 次操作.
每组数都编号为 \(1 \sim n\)
,第一组数的第 \(i\) 个数定义
(int)(10000 * sin(n + i))
,第二组数的第 \(i\)
个数定义为(int)(10000 * sin(m + i))
.
接下来 \(m\) 行每行三个数 \(flag, ix, iy\)
- \(flag\) 为
0
时,表示第一组数的第 \(ix\) 个数移出,插入至第二组数的第 \(iy\) 个位置 - \(flag\) 为
1
时,表示反向操作,第二组数的第 \(ix\) 个数移出,插入至第一组数的第 \(iy\) 个位置
最后输入两个整数 \(start, end\),要求输出第一组数在所有操作之后的 \([start, end)\) 左闭右开区间的数.
其中 \(1 \leq ix, iy, end - start \leq 100\),所有操作以及输出涉及的序号或区间保证合法,都在对应时刻数据数量的范围内.
Output
按要求输出,每行一个数.
Sample
5 4 1 4 4 1 3 4 0 5 0 1 0 2 5 7 ##CASE## 6 5 1 3 4 1 3 3 0 6 1 0 3 0 1 3 0 2 7
6569 4121 ##CASE## 6569 9893 4121 9893 -9999
Hint
Source
算法竞赛入门-线性表-链表Author
CSGrandeur