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

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

창문

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

요약
직교 다각형과 축에 평행한 창이 주어질 때, 창을 통해 보이는 다각형 내부의 분리된 조각 개수를 센다.
난이도

어려움10점 중 8점

유형
기하, 구현, 배열
정답자
아직 제출이 없습니다

문제

좌표평면 위에 다각형이 하나 놓여 있다. 이 다각형의 각 변은 좌표축과 평행하고, 이웃한 두 변은 서로 수직이며, 모든 꼭짓점의 좌표는 정수이다. 또한 변이 좌표축과 평행한 직사각형 모양의 창문이 하나 주어진다. 다각형의 내부(경계는 제외)는 빨간색으로 칠해져 있다. 이 창문을 통해 볼 수 있는, 서로 떨어진 빨간색 조각이 몇 개인지 구하여라.

아래 그림은 한 가지 예이다. 이 창문을 통해 서로 떨어진 두 개의 빨간색 조각을 볼 수 있다.

다음을 수행하는 프로그램을 작성하여라.

  • 표준 입력에서 창문과 다각형의 정보를 읽는다.
  • 창문을 통해 볼 수 있는, 서로 떨어진 빨간색 조각의 개수를 계산한다.
  • 그 결과를 표준 출력에 쓴다.

입력

첫째 줄에 네 정수 x1, y1, x2, y2가 공백 하나로 구분되어 주어지며, 모두 0 이상 10000 이하이다. (x1, y1)은 창문의 왼쪽 위 꼭짓점의 좌표이고, (x2, y2)는 창문의 오른쪽 아래 꼭짓점의 좌표이다.

다음 줄에는 다각형의 꼭짓점 개수를 나타내는 정수 n이 주어지며, 4 ≤ n ≤ 5000이다. 이어지는 n개의 줄에는 각각 두 정수 x와 y가 공백 하나로 구분되어 주어지고, 0 ≤ x ≤ 10000, 0 ≤ y ≤ 10000이다. 이는 다각형의 꼭짓점 좌표를 반시계 방향으로 나열한 것이며, 따라서 주어진 순서대로 경계를 따라 이동할 때 다각형의 내부는 항상 왼쪽에 있다. i번째 줄은 i번째 꼭짓점의 좌표이다.

출력

창문을 통해 볼 수 있는, 서로 떨어진 다각형의 빨간색 조각의 개수를 정수 하나로 출력한다.

예제4

  1. 예제 1

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

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

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

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