Type: Default 1000ms 512MiB

列表 1

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

时间限制: 1.0 秒

空间限制: 512 MB

题目描述

初始状态已知 nn 个节点,分别以 1,2,...,n1,2,...,n 编号。他们以这样的链进行单向传递:

$$1 \rightarrow 2 \rightarrow 3 \rightarrow …… \rightarrow n-1 \rightarrow n $$

接下来会有 mm 次调整,每一次的调整都会是如下两种指令之一:

  • 1 x1~x,表示将编号为 xx 的节点从链表中删除,他的前驱和后继互相连接;
  • 2 x y2~x~y, 表示将编号为 yy 的节点插入到编号为 xx 的节点后面,即 xx 连向 yyyyxx 原来的后继进行连接。(保证 xx 在链且 yy 不在链中)

所有的指令保证合法,且不存在链中节点小于 22 的情况。

现在请你输出经过 mm 次调整之后的链表。

输入格式

从标准输入读入数据。

输入共 m+1m+1 行.

11 行,两个正整数 n,mn,m ,含义如题面所示。

22m+1m+1 行,每行一个指令,如题目描述所示。保证指令当中 1x,yn1\le x,y\le n,且当前操作合法。

输出格式

输出到标准输出。

一行,表示最终的链表,每两个数用一个空格分开。

5 5
1 2
1 3
1 4
2 1 4
2 5 3
1 4 5 3

数据范围

对于 40%40\% 的数据:n,m103n,m\le 10^3

对于 100%100\% 的数据:n,m106n,m\le 10^6

提示

Chap 03 列表

看似是单向传输的链表,但是加上这些操作之后,单向链表是否还能满足要求呢?

可以实现《数据结构》当中列表的基础功能。此外,使用数组模拟,并将数组下标作为指针是一种非常便于书写的方式,后续的题目出现多个列表/平衡树/左式堆时,即可共享节点内存池。