posts - 17,  comments - 100,  trackbacks - 1
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

留言簿(0)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

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 一只咸蛋的唠叨 阅读(3964) 评论(5)  编辑 收藏
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]