Chinaunix首页 | 论坛 | 博客
  • 博客访问: 379461
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:34:12

Problem C(c.*(pas,c,cpp))

靖仇终于迎来了最后的魔王战役。他面对的是他的师傅!

魔化师傅非常厉害,有分身本领。他一下子分出2*109个分身。身为了方便,靖仇给他们12 * 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

 

Sample Output

3

 

数据范围:

40%的数据中,命令数不大于2000,询问数不大于10000

所有的数据中,命令数不大于50000,询问数不大于50000

posted on 2005-03-21 19:25 一只咸蛋的唠叨 阅读(3972)   

--------------------next---------------------

阅读(130) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~