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

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

사격

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

요약
겹치지 않는 축 정렬 직사각형들과 수직 또는 45도 반직선 발사가 주어질 때, 각 발사가 모든 직사각형과 만나는 길이의 합의 제곱을 구한다.
난이도

어려움10점 중 8점

유형
기하, 정렬, 누적 합, 이분 탐색
정답자
아직 제출이 없습니다

문제

Mihai는 한동안 군사 훈련을 받았고 아직 휴가를 받지 못했기 때문에, 상관인 Dan 대위에게 다시 한 번 운을 시험해 보기로 했다. Dan은 이번에는 조금 더 친절했지만, 먼저 자신의 사격 실력을 증명해 보라고 했다.

사격장의 과녁은 평면 위의 직사각형으로 생각할 수 있다. 대위는 Mihai에게 OX 축 위의 몇몇 점과 발사할 방향을 알려준다. 각 발사는 반직선이며, 45도 왼쪽 대각선, 45도 오른쪽 대각선, 수직 중 한 방향으로 향한다.

한 발사가 어떤 과녁을 맞힐 때의 비용은 발사의 반직선과 과녁 직사각형의 교집합의 길이로 정의한다. 교집합이 공집합이거나 한 점으로 이루어진 경우 비용은 0이다. 한 발사의 비용은 모든 과녁에 대한 발사의 명중 비용의 합으로 정의한다. 각 발사의 비용을 구하시오.

입력

표준 입력의 첫 줄에는 과녁 직사각형의 개수 N이 주어진다. 다음 N개 줄에는 각각 과녁 직사각형을 정의하는 4개의 자연수 X1, Y1, X2, Y2가 공백으로 구분되어 주어지며, 각각 왼쪽 아래 꼭짓점과 오른쪽 위 꼭짓점의 좌표를 나타낸다. 그다음 줄에는 발사의 개수 T가 주어진다. 다음 T개 줄에는 Mihai가 발사하는 점의 X 좌표 P와 발사 방향 D가 공백으로 구분되어 주어진다(D = 1은 수직 발사, D = 2는 왼쪽 대각선 발사, D = 3은 오른쪽 대각선 발사를 나타낸다).

출력

표준 출력에는 입력에 나타난 순서대로, 각 발사의 제곱 비용을 나타내는 음이 아닌 정수 T개가 한 줄에 하나씩 주어진다. 즉, 구한 각 비용에 대해 그 값의 제곱을 출력해야 한다.

제한

  • 1 ≤ N ≤ 50000
  • 1 ≤ T ≤ 100000
  • 1 ≤ X1 < X2 ≤ 100000, 1 ≤ Y1 < Y2 ≤ 100000
  • -100000 ≤ P ≤ 200000
  • 모든 직사각형의 변은 OX 축과 OY 축에 평행하다
  • 두 직사각형은 교차하지 않으며(즉, 공통점이 없다), 한 직사각형이 다른 직사각형에 완전히 포함되는 경우도 없다
  • 직사각형은 정사각형일 수 있다
  • 직사각형의 넓이는 0이 아니다
  • 동일한 발사가 있을 수 있다
  • 출력되는 수는 항상 음이 아닌 정수이다

힌트

첫 번째 발사의 비용은 (2√2 + √2)2=18이다.

두 번째 발사의 비용은 (1 + 2)2 = 9이다.

예제1

  1. 예제 1

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