채굴권 분할

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

요약
원을 자르는 선분들과 원 내부의 두 점이 주어질 때, 한 영역을 고르면 직선 경계를 공유하지 않고 B가 두 점을 모두 가질 수 있는지 판정한다.
난이도

어려움10점 중 8점

유형
기하, 그래프, DFS
정답자
아직 제출이 없습니다

문제

어느 원형의 땅 안에는 서로 다른 두 위치에 매우 귀중한 자원이 매장되어 있다. 이 자원들의 엄청난 가치 때문에 많은 회사가 채굴권을 얻기 위해 경쟁했지만, 엄격한 심사 과정을 통해 두 개의 기업만 선정되었다. 여러분의 회사는 최종적으로 채굴권을 얻은 두 회사에 포함되었다. 특혜 시비를 피하기 위해 정부는 두 회사에게 이 땅을 배분하는 공정한 방법을 고안했는데, 그 방법은 다음과 같다:

  • 규칙 1 (A 사의 분할): 한 회사 A 는 10,00010\\,000 개보다 적은 수의 선분을 사용하여 원형의 토지를 더 작은 영역으로 나눌 수 있다. 각 선분은 원의 둘레 위에 있는 한 점에서 시작하여 원의 둘레 위에 있는 다른 한 점에서 끝난다.
  • 규칙 2 (경계 침범 금지): 직선 경계를 공유하며 맞닿아 있는 영역은 서로 다른 회사가 개발해야 한다.
  • 규칙 3 (B 사의 수락과 선택권): B 회사는 A 회사가 제안한 분할을 수락하거나 거부할 권리가 있다. B 회사가 수락할 경우, B 회사는 분할된 영역 중 하나를 선택할 권리가 있다. 그외의 나머지 영역들은 규칙 2 에 따라 두 회사에 자동으로 할당된다.

당신은 자원이 매장된 두 위치 p_1p\_1과 p_2p\_2를 이미 알고 있다. 당신은 B 회사를 대표해 위치 모두가 B 회사에 할당된 영역 안에 놓일 수 있도록 A 회사의 분할을 수락할지 거부할지를 결정해야 한다.

선분의 집합으로 표현되는 회사 A 의 분할 제안과 자원이 묻혀 있는 두 위치가 주어질 때, 회사 B 가 이를 수락해야 하는지 그렇지 않은지를 결정하는 프로그램을 작성하라.

입력

입력은 표준 입력을 사용한다. 첫 번째 줄에 원을 분할하는 선분의 개수를 나타내는 10,00010\\,000 보다 작은 정수 nn이 주어진다. 그 다음 nn개 줄에 nn개 선분에 대한 정보가 주어진다. 각 줄은 하나의 선분이 갖는 두 끝점을 나타내는 두 개의 정수 인덱스로 이루어진다. 원의 둘레는 3,6003\\,600개의 단위로 나누어지며, 원의 중심에서 정확히 동쪽에 있는 원 둘레 위의 점이 인덱스 00을 갖고, 이 인덱스는 반시계 방향으로 증가하여 3,5993\\,599까지의 값을 가질 수 있다. 여기서 중복되는 선분은 존재하지 않는다. 선분들을 표현하는 nn개의 줄이 끝나면, 자원이 매장된 서로 다른 두 위치 p_1p\_1과 p_2p\_2의 정보를 담은 두 줄이 추가로 주어진다. 각 위치는 두 정수로 표시된다. 첫 번째 정수는 방향을 나타내며, 중심에서 출발하여 매장된 위치를 통과하는 반직선이 원의 둘레와 만나는 지점의 인덱스로 표현된다. 두번째 정수는 중심에서 매장된 자원까지의 거리를 나타낸다. 거리는 원의 반지름을 1,0001\\,000개의 단위로 나누어 측정되며, 중심의 거리는 00이고 원의 둘레에 있는 점들의 거리는 1,0001\\,000이다. 매장된 자원은 원 안에 있으며, 선분 위에 놓이는 일도 없다는 것이 보장된다.

출력

출력은 표준 출력을 사용한다. 출력은 정확히 한 줄로 이루어진다. B 회사가 두 자원의 위치 p_1p\_1과 p_2p\_2 모두를 획득할 수 있다면 “YES”, 그렇지 않으면 “NO”를 출력한다.

예제2

  1. 예제 1

    입력
    3
    450 1800
    900 0
    450 2700
    900 850
    450 500
    
    예상 출력
    NO
    
  2. 예제 2

    입력
    4
    450 1800
    0 1350
    1350 2700
    2700 0
    450 500
    3150 950
    
    예상 출력
    YES