在参加 P 国主办的 Pre-SDOI Training Camp(也被称作 Public Easy Round #2
)前,你的队友问了你一道这样的简单数据结构题:
维护两个整数二元组的多重集合 U,V,初始为空,定义
D(U,V):={−1,U=∅∨V=∅,min{max(ux+vx,uy+vy):(ux,uy)∈U,(vx,vy)∈V},otherwise.
进行如下两种类型之一的 Q 次修改:
- 1 s x y:加入 (x,y) 到某个集合。若 s=1 则是 U,否则是 V。
- 2 s x y:从某个集合删除 (x,y),若有多个则删除其中一个。若 s=1 则是 U,否则是 V。保证当前时刻对应集合存在至少一个 (x,y)。
为了证明你已经完全掌握了简单数据结构题,你需要求出每次修改之后 D(U,V) 的值。
输入格式
第一行,一个正整数 Q。
之后 Q 行,每行一次修改,格式见题目描述。
输出格式
Q 行,每行一个整数,第 i 个整数表示第 i 次修改之后 D(U,V) 的值。
样例
input
6 1 1 100 100 1 2 30 130 1 1 120 170 2 1 100 100 1 2 70 100 2 1 120 170
output
-1 230 230 300 270 -1
数据范围
对于所有数据,1≤Q≤2.5⋅105,s∈{1,2},0≤x,y≤2.5⋅105。
子任务编号 | 追加限制 | 分数 |
---|---|---|
1 | Q≤10000 | 5 |
2 | Q≤105 | 35 |
3 | 60 |