1646. 寄蒜几盒

你需要实现下面的操作:

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

输入

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

接下来输入 nn 行,每行五个整数 c,x1,y1,x2,y2(1c3,0x1,y1,x2,y2109)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,63,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