题目背景
北风骑士 · 西风骑士团团长 · 写信的 · 酒鬼 · 法尔伽大人可精了,得知此次出征去讨伐深渊可能有生命危险,于是立下反向 flag,成功避免破灭结局出现。
声明
本题有可能会使用到线段树。
你说得对,但是线段树是一种维护区间信息的树型数据结构,有着极其广阔的应用场景。它可以将大量需要 O(N) 维护的内容变为树上的 O(logN) 维护。
题目描述
法尔伽大团长会给出如下两种操作,共 T 个:
1. 立下一个 flag 区间 {tl,tr},令上一次的查询的左端点为 prel,右端点为 prer,答案为 ans, 且是第 i 次查询(假设上一次查询是第3次遇到的查询,且是在第5次操作时碰到的,则i为3)。则 tl=prel+ans,tr=prer+ans+(i%5)。特别的,第一次操作时,输入 tl,tr,数据保证第 1 次操作是 1,第 2 次操作是 2。
2. 查询是否有至少一对 flag 区间互为 反向flag。对于一对 flag 区间 [l1,r1],[l2,r2](我们认为 l1≤l2),若满足 r1≥l2,则称两个 flag 区间互为 反向flag。如果有,输出 1, 否则输出 0。
我们规定在所有的操作前不存在任何 flag 区间。
输入格式
第 1 行,一个整数 T。
接下来 T 行,每行一个整数 op。
当 op==1,表示执行操作 1。特别的,第一次操作时,给出两个整数 firstl,firstr。
当 op==2,表示执行操作 2。
输出格式
共有 Q 个查询,输出 Q 行,其中第 i 行是第 i 个查询的答案ans。
样例输入
4
1 1 3
2
1
2
样例输出
0
1
样例解释
对于第 1 个查询,只存在一个 flag 区间,于是也不存在反向flag。
对于第 2 个查询,有 flag 区间 {1,3},{1,4},1≤3 故存在反向flag。
数据规模与约定
对于 100% 的数据,1≤firstl<firstr≤105,1≤T≤105。