점과 직사각형

시간 제한2초메모리 제한512 MB

요약
점 추가와 직사각형 추가 질의를 온라인으로 처리하며, 각 질의 후 직사각형 내부나 경계에 들어가는 점과 직사각형 쌍의 개수를 출력한다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 누적 합, 정렬, 구현
정답자
아직 제출이 없습니다

문제

무한한 2차원 평면과 qq개의 쿼리가 있다. 쿼리는 두 종류다.

  • <1 x y> — 좌표 (x,y)(x, y)에 점을 추가한다.
  • <2 x1 y1 x2 y2> — 왼쪽 아래 꼭짓점의 좌표가 (x1,y1)(x_1, y_1)이고 오른쪽 위 꼭짓점의 좌표가 (x2,y2)(x_2, y_2)인 직사각형을 추가한다. 이 직사각형의 넓이는 0일 수 있으며, 점으로 퇴화할 수도 있다.

직사각형과 점은 겹칠 수 있다. 즉, 도형들이 서로 다르다는 보장은 없다.

각 쿼리를 처리한 뒤, 점이 직사각형의 테두리나 내부에 있는 (직사각형, 점) 쌍의 개수를 출력해야 한다.

입력

첫째 줄에 정수 qq가 주어진다. (1≤q≤1051 \le q \le 10^5)

다음 qq개의 줄에 각각 하나의 쿼리가 주어진다.

  • <1 x y> (1≤x,y≤1091 \le x, y \le 10^9) — 좌표 (x,y)(x, y)에 점을 추가한다.
  • <2 x1 y1 x2 y2> (1≤x1≤x2≤1091 \le x_1 \le x_2 \le 10^9, 1≤y1≤y2≤1091 \le y_1 \le y_2 \le 10^9) — 왼쪽 아래 꼭짓점의 좌표가 (x1,y1)(x_1, y_1)이고 오른쪽 위 꼭짓점의 좌표가 (x2,y2)(x_2, y_2)인 직사각형을 추가한다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 점이 직사각형의 변이나 내부에 있는 (직사각형, 점) 쌍의 개수를 하나의 정수로 출력한다.

힌트

첫 번째 예제의 설명:

첫 번째 쿼리 이후에는 좌표 (2,3)(2, 3)에 점이 하나 있고 직사각형은 없으므로, 점과 직사각형의 쌍도 없다.

두 번째 쿼리 이후에도 직사각형이 없으므로 쌍이 없다.

세 번째 쿼리 이후에도 직사각형은 없다.

네 번째 쿼리에서 왼쪽 아래 점의 좌표가 (1,1)(1, 1)이고 오른쪽 위 꼭짓점의 좌표가 (5,5)(5, 5)인 직사각형을 추가했다. 이전에 추가한 점 세 개가 모두 이 직사각형 안에 있으므로 세 쌍이 있다.

다섯 번째 쿼리 이후에는 네 쌍이 있다. 처음 세 쿼리에서 추가한 점들이 네 번째 쿼리에서 추가한 직사각형 안에 있는 세 쌍과, 두 번째 쿼리에서 추가한 점이 다섯 번째 쿼리에서 추가한 직사각형 안에 있는 한 쌍이 있다.

예제3

  1. 예제 1

    입력
    5
    1 2 3
    1 2 2
    1 3 4
    2 1 1 5 5
    2 2 2 2 2
    
    예상 출력
    0
    0
    0
    3
    4
    
  2. 예제 2

    입력
    4
    2 1 1 3 3
    2 1 1 2 2
    1 2 2
    1 2 2
    
    예상 출력
    0
    0
    2
    4
    
  3. 예제 3

    입력
    7
    1 5 5
    1 5 5
    1 5 5
    2 2 2 9 9
    2 1 1 5 5
    2 1 1 2 2
    1 2 2
    
    예상 출력
    0
    0
    0
    3
    6
    6
    9