#P4182. Robots protection

Robots protection

题目描述

你需要在平面直角坐标系上进行 qq 次操作。每次操作有两种,要么放置一个两条直角边平行于坐标轴的等腰直角三角形,要么查询某一个点被多少个三角形覆盖。

每个等腰直角三角形可以用四个参数 dir,x,y,lendir,x,y,len 确定,其中 dir[1,4]dir \in [1,4] 表示三角形的方向,(x,y)(x,y) 表示直角的顶点坐标,lenlen 表示直角边的长度。

保证所有点的坐标都是整数且 [1,n]\in [1,n]

输入格式

第一行两个整数 n,qn,q1n50001\le n \le 50001q1051\le q \le 10^5

接下来 qq 行,每行一个询问,每个询问的格式如下:

  • 1  dir  x  y  len\tt 1\ \ dir\ \ x\ \ y\ \ len,表示放置一个三角形,对于不同方向的三角形坐标点定义如下:
    • dir=1dir=1(x,y)(x,y)(x+len,y)(x+len,y)(x,y+len)(x,y+len)
    • dir=2dir=2(x,y)(x,y)(x+len,y)(x+len,y)(x,ylen)(x,y-len)
    • dir=3dir=3(x,y)(x,y)(xlen,y)(x-len,y)(x,y+len)(x,y+len)
    • dir=4dir=4(x,y)(x,y)(xlen,y)(x-len,y)(x,ylen)(x,y-len)
  • 2  x  y\tt 2\ \ x\ \ y:询问该坐标点被多少个三角形覆盖。

输出格式

对于每一个询问,在一行中输出一个整数表示答案。

17 10
1 1 3 2 4
1 3 10 3 7
1 2 6 8 2
1 3 9 4 2
2 4 4
1 4 15 10 6
2 7 7
2 9 4
2 12 2
2 13 8
2
2
2
0
1