题目描述
Hearthstone 是一个知名的网络游戏,请仔细阅读其规则:
有 n 种卡牌,编号为 1∼n 。游戏中会发生如下两种事件:
- add :往 hero zone 中添加一张未知的卡牌,保证此后 hero zone 中不存在两张卡牌编号相同。
- test x y :测试 hero zone 中是否存在牌 x 。如果存在牌 x , y=1 ,然后将 x 移除;否则, y=0 。请注意,经过 test x y 后, x 一定不存在于 hero zone 中。
给定事件序列 E=[e1,…,em] ,称事件序列是合法的,当且仅当,存在一种 add 牌的方案,使得:
- add 一张牌前,这张牌不存在于 hero zone 中。
- test x 0 时,牌 x 不存在于 hero zone 中。
- test x 1 时,牌 x 存在于 hero zone 中。
给定 q 个事件 e1,e2,…,eq ,你需要维护一个事件序列 E 。一开始, ∣E∣=0 。依次对于每个 i=1,2,⋯,q ,尝试将 ei 插入 E 的末尾。如果 E 是不合法的,移除事件 ei 并报告一个 " bug ";否则,报告必须存在于 hero zone 中的牌的数量,和必须不存在于 hero zone 中的牌的数量。
注意:不一定存在于 hero zone 中和一定不存在于 hero zone 中的牌,是有区别的。
输入格式
本题多组测试。输入的第一行包含一个整数 T ,表示数据组数。对于每组数据:
第一行包括两个整数 n,q ,表示牌的种类数和事件的数量。
接下来每行包括一个事件:
add :表示向 hero zone 添加一个卡牌。
test x y :表示对卡牌 x 进行一个 test 并移除卡牌 x 。保证 x∈[1,n],y∈[0,1] 。
输出格式
对于每组数据:
对于每个事件,如果它可以被插入到序列末尾,则输出两个以一个空格隔开的整数,表示一定存在于 hero zone 中的牌的数量和一定不存在于 hero zone 中的牌的数量;否则,输出一行一个字符串 " bug "。
数据范围
对于 5% 的数据: ∑n,q≤10 。
对于 10% 的数据: ∑n,q≤100 。
对于 20% 的数据: ∑n,q≤2000 。
对于 25% 的数据: ∑n,q≤5000 。
另有 10% 的数据:没有 test x 0 。
另有 10% 的数据:没有 test x 1 。
另有 5% 的数据, add 都在 test 前。
对于 100% 的数据: 1≤T≤105 , 1≤∑n,∑q≤105 。
输入样例 1
2
1 8
test 1 0
test 1 1
add
test 1 0
test 1 1
add
test 1 1
test 1 0
2 10
add
add
add
test 1 1
test 1 1
add
add
add
test 2 1
test 2 1
输出样例 1
0 1
bug
1 0
bug
0 1
1 0
0 1
0 1
0 0
2 0
bug
1 1
bug
2 0
bug
bug
1 1
bug
输入样例 2
1
4 7
add
add
test 3 0
test 4 0
add
test 1 1
test 3 1
输出样例 2
0 0
0 0
0 1
2 2
2 0
1 1
1 3