题号:NC54307
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld
题目描述
银灰,你的盟友,前来助力。你不会让我失望的,对吗。
众所周知,银老板喜欢爬猫爬架,还喜欢和博士下棋。
这一天,银灰又来到宿舍找Dr.
消磨时间尚有更好的方法。想不想尝试一下?
然后,你掏出了棋盘,结果银老板制止了你,你娇羞(划掉)不解的看向银灰,银灰从背后取出一张硕大的网格图
随即,银老板向你介绍了游戏规则
银灰会用他的拐杖在棋盘上画若干个矩形,当然,也有可能擦除之前画的某个矩形
同时,银灰会向你抛出若干个问题,你需要正确回答他的问题,否则你将会失去来自喀兰之主的一份大礼
由于银灰的问题实在来的太快太难了,你需要设计一个程序解决他的问题
输入描述:
第一行1个整数,Q,表示操作的数量
接下来Q行
若输入为1 a b x y,表示银老板用拐杖画了一个左下角坐标为(a,b),右上角坐标为(x,y)的矩形(保证合法)
若输入为2 x,表示银老板擦除了他在第x次操作中画下的矩形(请注意,即使这个矩形被擦除,在后面的操作中仍然具有影响,具体请看样例)
若输入为3 a b x y,表示银老板抛出了一个询问,他想知道当前网格图上有多少矩形和一个左下角为(a,b),右上角为(x,y)的矩形有交点(四个顶点也算,只有边重合也算)
输出描述:
若干行,对于每个询问,请输出对应的答案
示例1
输入
复制
5
1 1 1 2 2
1 2 2 3 3
3 3 3 4 4
2 2
3 3 3 4 4
说明
对于第一次询问,第二个矩形(2,2)->(3,3)与其有交点,但是当擦除第二个矩形后,就没有矩形和它有交点了,故第二次询问输出0
示例2
输入
复制
9
1 1 2 3 4
1 2 2 3 3
1 4 4 8 8
3 3 3 4 4
3 5 3 6 8
2 2
3 2 1 6 8
2 3
3 3 1 4 5
说明
第一次询问,如图

(虚线部分为询问的矩形)
第二次询问,如图

第一次删除,操作后如图,

第三次询问,如图

第二次删除操作,操作后如图

第四次询问,如图

备注:
Q <= 100000
a,b,x,y <= 1,000,000,000
保证在输入中的操作1和操作3中,x>a 且 y>b
保证在操作2中,x <= 该操作之前操作1的个数,且每个矩形最多只会被删除一次(但是可以重复添加)