만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

울타리 기둥 칠하기

시간 제한3초메모리 제한1024 MB

요약
직각으로 꺾이는 울타리의 기둥 좌표와 소들의 시작점, 끝점이 주어질 때, 더 짧은 경로를 걷는 소마다 각 기둥이 몇 번 닿는지 구합니다.
난이도

보통10점 중 6점

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

문제

Farmer John의 소 NN마리(1≤N≤1051 \leq N \leq 10^5)는 각자 목장을 둘러싼 울타리를 따라 매일 산책하기를 좋아한다. 소가 울타리 기둥 옆을 지나갈 때마다 기둥에 몸이 닿으므로, Farmer John은 기둥 페인트를 정기적으로 다시 칠해야 한다.

울타리는 PP개의 기둥(4≤P≤2⋅1054 \leq P \leq 2\cdot 10^5, PP는 짝수)으로 이루어진다. 각 기둥은 농장 지도 위의 서로 다른 2차원 점 (x,y)(x,y)이다(0≤x,y≤1090 \leq x, y \leq 10^9). 기둥은 인접한 두 기둥과 수직 또는 수평 선분으로 이어지므로, 울타리는 변이 x축이나 y축에 평행한 다각형이다. 마지막 기둥은 첫 기둥과 이어져 목장을 둘러싸는 닫힌 고리를 이룬다. 울타리 선분은 끝점에서만 겹칠 수 있다. 각 기둥은 정확히 두 선분의 끝점이며, 한 끝점에서 만나는 두 선분은 항상 수직이다. 기둥의 위치가 주어지면 울타리의 모양은 하나로 정해진다.

각 소는 울타리 위에서 원하는 출발점과 도착점을 가진다. 이 점들은 기둥 위에 있을 수도, 기둥 사이에 있을 수도 있다. 소는 출발점에서 도착점까지 울타리를 따라 걷는다. 울타리가 닫힌 고리이므로 경로는 두 가지인데, 소는 게으르기 때문에 더 짧은 쪽으로 걷는다. 두 경로의 길이가 같은 경우는 없다.

소가 기둥을 지나가거나 기둥이 출발점 또는 도착점이면 그 기둥에 닿은 것으로 본다. Farmer John이 다음에 칠할 기둥을 정할 수 있도록, 각 기둥이 하루에 받는 접촉 횟수를 구하라.

입력

첫 줄에 NN과 PP가 주어진다. 다음 PP개의 줄에는 각각 기둥의 위치 (x,y)(x, y)를 나타내는 정수 두 개가 주어진다. 기둥은 어떤 순서로든 주어질 수 있다. 다음 NN개의 줄에는 각각 소 한 마리의 산책 출발점 (x1,y1)(x_1, y_1)과 도착점 (x2,y2)(x_2, y_2)를 나타내는 정수 네 개 x1x_1 y1y_1 x2x_2 y2y_2가 주어진다.

출력

PP개의 정수를 출력한다. 각 정수는 해당 기둥이 받은 접촉 횟수이다.

예제3

  1. 예제 1

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

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

    입력
    1 12
    0 0
    2 0
    2 1
    1 1
    1 2
    3 2
    3 3
    1 3
    1 4
    2 4
    2 5
    0 5
    2 2 0 2
    
    예상 출력
    1
    1
    1
    1
    1
    0
    0
    0
    0
    0
    0
    0