아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

소 가두기

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

요약
각 소는 격자에서 아래와 오른쪽으로만 이동하며 울타리를 넘지 않고 도달할 수 있는 꽃이 몇 송이인지 구합니다.
난이도

어려움10점 중 8점

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

문제

목장은 10610^6개의 행과 10610^6개의 열로 이루어진 격자다. 행은 위에서 아래로 11부터 10610^6까지, 열은 왼쪽에서 오른쪽으로 11부터 10610^6까지 번호가 붙어 있다.

목장에는 소 nn마리가 각각 한 칸씩 차지하고 서 있다. 민들레 꽃 mm송이도 각각 한 칸을 차지하며, 울타리 ff개가 세워져 있다. 울타리는 칸의 경계선을 따라 놓인 직사각형이다. 두 울타리는 서로 교차하거나 맞닿지 않는다. 다만 어떤 울타리가 다른 울타리가 둘러싼 안쪽에 통째로 들어 있을 수는 있다.

바람 때문에 소는 아래쪽이나 오른쪽으로만 움직인다. 칸 (r,c)(r, c)에 있는 소는 (r+1,c)(r + 1, c)나 (r,c+1)(r, c + 1)로 갈 수 있다. 다른 소나 꽃이 놓인 칸은 지나갈 수 있지만, 울타리는 넘지 못한다.

소마다 자기 칸에서 갈 수 있는 칸에 놓인 꽃이 몇 송이인지 세어라.

입력

입력은 울타리, 꽃, 소의 세 부분으로 이루어진다.

첫째 부분의 첫 줄에는 울타리의 개수 ff (0≤f≤2000000 \le f \le 200000)가 주어진다. 이어지는 ff개의 줄에는 울타리 하나를 나타내는 정수 r1r_1, c1c_1, r2r_2, c2c_2 (1≤r1≤r2≤1061 \le r_1 \le r_2 \le 10^6, 1≤c1≤c2≤1061 \le c_1 \le c_2 \le 10^6)가 주어진다. (r1,c1)(r_1, c_1)은 울타리 안쪽의 왼쪽 위 칸이고, (r2,c2)(r_2, c_2)는 울타리 안쪽의 오른쪽 아래 칸이다. 두 울타리가 교차하거나 맞닿는 경우는 없다.

둘째 부분의 첫 줄에는 꽃의 개수 mm (0≤m≤2000000 \le m \le 200000)이 주어진다. 이어지는 mm개의 줄 중 kk번째 줄에는 kk번째 꽃이 놓인 칸의 위치 rr과 cc (1≤r,c≤1061 \le r, c \le 10^6)가 주어진다. 두 꽃이 같은 칸에 놓이는 경우는 없다.

셋째 부분의 첫 줄에는 소의 개수 nn (1≤n≤2000001 \le n \le 200000)이 주어진다. 이어지는 nn개의 줄 중 kk번째 줄에는 kk번째 소가 서 있는 칸의 위치 rr과 cc (1≤r,c≤1061 \le r, c \le 10^6)가 주어진다. 두 소가 같은 칸에 서 있거나, 소와 꽃이 같은 칸에 있는 경우는 없다.

출력

nn개의 줄을 출력한다. kk번째 줄에는 kk번째 소가 갈 수 있는 칸에 놓인 꽃의 개수를 출력한다.

힌트

그림은 첫 번째 예제의 배치를 나타낸다.

예제2

  1. 예제 1

    입력
    4
    2 2 8 4
    1 9 4 10
    6 7 9 9
    3 3 7 3
    9
    3 4
    8 4
    11 5
    10 7
    10 8
    9 8
    2 8
    4 11
    9 11
    8
    1 1
    5 10
    6 9
    3 7
    7 1
    4 2
    7 5
    3 3
    
    예상 출력
    5
    1
    0
    1
    3
    1
    3
    0
    
  2. 예제 2

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