分类:
2008-10-13 16:34:12
靖仇终于迎来了最后的魔王战役。他面对的是他的师傅!
魔化师傅非常厉害,有分身本领。他一下子分出2*109个分身。身为了方便,靖仇给他们1到2 * 109的唯一的编号。
一开始,魔化师傅的分身们站成一排,如下:
1 2 3 4 5 6 7 8 …
然后魔化师傅会对分身们发出指令:从左数第4个分身开始,到第7个分身,交换位置!
接着这一段的分身就执行了一次反转操作(Reverse):
1 2 3 7 6 5 4 8 …
魔化师傅又说:第2个分身,到第6个分身,交换位置,那么分身们就会很听话的站成了:
1 5 6 7 3 2 4 8 …
靖仇被这样的交换弄得晕头转向,他很想知道左数第n个分身的编号是什么。聪明伶俐的小雪也被难住了。你能写个程序帮助他们么?
l 从文件中读入魔化师傅的每一条命令或者靖仇的提问
l 计算出每一次询问的答案;
l 向输出文件打印结果。
时限:5s
输入:(c.in)
输入文件的第一行,包含一个正整数N,表示魔化师傅的命令和询问次数总和。
以下N行,每行表示一条命令或者询问:
如果该行第一个数字为0,那么表示一条命令,紧跟这两个数字a ≤ b,在[1, 2 * 109]范围内,表示将从左数第a个分身到从左数第b个分身交换位置。
否则该行第一个数字为1,表示一次询问,后接一个数字p,表示询问从左数第p个分身的编号。
输出:(c.out)
顺序针对每一次询问,输出一行,表示当前指定位置的分身的编号。
Sample Input:
3
0 4 7
0 2 6
1 5
3
数据范围:
40%的数据中,命令数不大于2000,询问数不大于10000;
所有的数据中,命令数不大于50000,询问数不大于50000。