Problem1172--队伍安排

1172: 队伍安排

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 1∼N1\sim N1N,他采取如下的方法:
  • 先将 111 号同学安排进队列,这时队列中只有他一个人;
  • 2−N2-N2N 号同学依次入列,编号为 iii 的同学入列方式为:老师指定编号为 iii 的同学站在编号为 1∼(i−1)1\sim (i -1)1(i1) 中某位同学(即之前已经入列的同学)的左边或右边;
  • 从队列中去掉 MMM 个同学,其他同学位置顺序不变。
在所有同学按照上述方法队列排列完毕后,老师想知道从左到右所有同学的编号。

Input

111 行为一个正整数 N (1≤N≤105)N\ (1\le N \le 10^5)N (1N105),表示了有 NNN 个同学。
2∼N2\sim N2N 行,第 iii 行包含两个整数 k,pk,pk,p,其中 kkk 为小于 iii 的正整数,ppp000 或者 111。若 ppp000,则表示将 iii 号同学插入到 kkk 号同学的左边,ppp111 则表示插入到右边。
N+1N+1N+1 行为一个正整数 M(1≤M≤105)M (1\le M \le 10^5)M(1M105),表示去掉的同学数目。
接下来 MMM 行,每行一个正整数 xxx,表示将 xxx 号同学从队列中移去,如果 xxx 号同学已经不在队列中则忽略这一条指令。

Output

一行,包含最多 NNN 个空格隔开的正整数,表示了队列从左到右所有同学的编号,行末换行且无空格。

Sample 1 Input

4
1 0
2 1
1 0
2
3
3

Sample 1 Output

2 4 1

HINT

链表定义可以参考
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};
也可以使用STL的List。

Source/Category

数据结构 2.1.链表 STL 3.2.list