만드는 중입니다

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

울타리를 따라 걷기

면접 대비

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

요약
축에 평행한 울타리 둘레 위의 시작점과 끝점이 주어졌을 때, 각 소가 울타리를 따라 걷는 더 짧은 거리를 구합니다.
난이도

보통10점 중 4점

유형
누적 합, 배열, 구현
정답자
아직 제출이 없습니다

문제

Farmer John의 소 NN마리(1≤N≤1051 \leq N \leq 10^5)는 각자 매일 목장을 둘러싼 울타리를 따라 산책하기를 좋아한다.

울타리는 PP개의 기둥(4≤P≤2⋅1054 \leq P \leq 2\cdot 10^5, PP는 짝수)으로 이루어진다. 각 기둥은 FJ 농장 지도 위의 서로 다른 2차원 점 (x,y)(x,y)이다(0≤x,y≤10000 \leq x, y \leq 1000). 각 기둥은 인접한 두 기둥과 수직 또는 수평 선분으로 연결된다. 따라서 울타리는 변이 x축 또는 y축과 평행한 다각형이다. 마지막 기둥은 첫 기둥과 연결되어 울타리가 목장을 감싸는 닫힌 고리를 이룬다. 울타리 선분은 끝점에서만 겹치며, 각 기둥은 선분 끝점 두 개와 정확히 맞닿는다. 끝점에서 만나는 두 선분은 항상 서로 수직이다.

각 소는 산책할 때 시작 위치와 도착 위치를 미리 정해 둔다. 각 위치는 울타리 위의 점이며, 기둥 위에 있을 수도 있고 아닐 수도 있다. 소는 시작 위치에서 도착 위치까지 울타리를 따라 걷는다. 울타리는 닫힌 고리이므로 경로는 두 가지가 가능하다. 소는 게을러서 더 짧은 쪽으로 걷는다(두 경로의 길이가 같으면 어느 쪽을 택해도 된다). 각 소가 걷는 거리를 구하라.

입력

첫 줄에 NN과 PP가 주어진다. 이어지는 PP개의 줄에는 기둥의 좌표가 시계 방향 또는 반시계 방향 순서로 한 줄에 정수 두 개씩 주어진다. 이어지는 NN개의 줄에는 각 소의 시작 위치 (x1,y1)(x_1, y_1)과 도착 위치 (x2,y2)(x_2, y_2)를 나타내는 정수 네 개 x1x_1 y1y_1 x2x_2 y2y_2가 주어진다.

출력

각 소가 걷는 거리를 한 줄에 하나씩 NN개의 정수로 출력하라.

예제1

  1. 예제 1

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