/ WHOJ / 题库 /

喝红茶

喝红茶

题目描述

Sarah\text{Sarah} 喜欢喝红茶,一天她要求 Smart\text{Smart} 开卡车帮她运红茶过来。

红茶其实是编好号了的,从 00 开始一直到无穷……

一开始卡车上是没有红茶的,然后接下来到企鹅国的路上有 mm 个时刻,每个时刻都会发生一种事情。

第一种事件,Smart\text{Smart} 到了一个红茶店,买了一个编号为 xx 的红茶(之前不会买过相同编号的红茶)。

第二种事件,一个目前在卡车上的编号为 xx 的红茶飞出了卡车。

第三种事件,Smart\text{Smart} 把目前不在卡车上的最早飞出去的红茶捡回了卡车上。

第四种事情,Smart\text{Smart} 清点红茶,希望找到一个最小的编号,这种编号的红茶并不在卡车上。

格式

输入格式

第一行两个整数分别表示 mmczyczyczy=1czy=1 表示进行强制在线,等于 00 则允许离线。

接下来 mm 行,每行表示一个事件,首先会读入事件编号。

如果编号为 11,还要再读入一个数表示加入的红茶的编号。czy=1czy=1 时请把这个编号异或上一次的答案。

如果编号为 22,还要再读入一个数表示飞出去的红茶的编号。czy=1czy=1 时请把这个编号异或上一次的答案。

编号为 33 表示捡红茶。

编号为 44 表示询问。

初始时上一次的答案为 00

输出格式

对于编号为 44 的事件输出一行表示答案。

样例1

样例输入1

10 0
1 0
1 1
1 2
1 3
2 1
4
3
4
1 4
4

样例输出1

1
4
5

限制

本题采取捆绑数据测试。

Task1(20分):

M1000M≤1000,红茶的编号在 10001000 以内,czy=0czy=0

Task2(20分)

m100000m≤100000,红茶的编号在 100000100000 以内,czy=0czy=0

Task3(20分)

m10000000m≤10000000,红茶的编号在 1000000010000000 以内,czy=0czy=0

Task4(40分):

m10000000m≤10000000,红茶的编号在 int\text{int} 范围以内,czy=1czy=1

提示

由于数据范围很大,请采用快速读入方式读取输入数据。

inline int read(int &x)//快速读入
{char ch=getchar();
int f=1;x=0;
while (ch<'0'||ch>'9') {if(ch=='-')f=-1; ch=getchar();}
while (ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();}
return x*f;
}

void write(int x)//快速输出
{if (!x) {putchar('0'); putchar('\n'); return;}
int k=0;
while (x){sta[++k]=x%10; x/=10;}
while (k) putchar('0'+sta[k--]);
putchar('\n');
}

信息

ID
1755
难度
9
分类
其他 点击显示
标签
递交数
2
已通过
1
通过率
50%
上传者

相关

在下列训练计划中:

YGP模拟赛