1646. 寄蒜几盒

你需要实现下面的操作:

  • 操作 1 :在平面内以两点 (x_1,y_1),(x_2,y_2) 为斜率插入一条直线,这条直线的编号等于已执行操作 1 次数 +1
  • 操作 2 :在平面内删除以两点 (x_1,y_1),(x_2,y_2) 为斜率的直线,如果有多条,删除最先插入的;如果没有,忽略这次操作
  • 操作 3 :查询平面内与两点 (x_1,y_1),(x_2,y_2) 确定的斜率相等的里,最先插入的直线;如果没有,输出 -1
  • 操作 4 :查询平面内与两点 (x_1,y_1),(x_2,y_2) 确定的斜率相等的直线的数目
  • 操作 5 :查询平面内斜率大于与两点 (x_1,y_1),(x_2,y_2) 确定的斜率的直线的数目
  • 操作 6 :查询平面内斜率小于与两点 (x_1,y_1),(x_2,y_2) 确定的斜率的直线的数目

输入

输入一行一个整数 n(1\le n\le10^5) ,代表操作数量。

接下来输入 n 行,每行五个整数 c,x_1,y_1,x_2,y_2(1\le c\le3,0\le|x_1|,|y_1|,|x_2|,|y_2|\le10^{9}) , 代表操作类型和两点。

保证每次输入的两点不重合。

输出

对于每个操作 3,4,5,6 ,输出一行一个整数,代表查询结果。

样例

标准输入 复制文本
8
1 1 1 2 2
1 1 2 2 1
1 1 1 2 2
3 2 2 1 1
2 2 2 6 6
3 2 2 1 1
2 4 4 3 3
3 3 3 1 1
标准输出 复制文本
1
3
-1
标准输入 复制文本
7
1 0 0 1 1
1 0 0 2 2
1 0 0 1 2
1 0 0 2 1
4 1 1 0 0
5 3 3 4 4
6 5 5 1 1
标准输出 复制文本
2
1
1

提示

update 21/12/2 强化了数据

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 29
通过 5