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

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

국가 재난: 두 개의 탑

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

요약
두 타워가 이루는 직사각형 안에서 불타는 원들이 두 타워를 잇는 모든 연속 경로를 막는지 판정한다. 원들이 직사각형의 마주 보는 두 변을 연결하는 사슬을 이루면 경로가 없다.
난이도

보통10점 중 7점

유형
기하, 유니온 파인드, 그래프, 구현
정답자
아직 제출이 없습니다

문제

인도네시아에는 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)에 산불 감시탑 두 개가 있으며, x1<x2x_1 < x_2이고 y1<y2y_1 < y_2이다. 전국에는 NN개의 발화 지점이 흩어져 있으며, ii번째 발화 지점은 중심이 (fxi,fyi)(fx_i, fy_i)이고 반지름이 rir_i인 원이다. 점 (x,y)(x, y)가 다음 조건을 모두 만족하면 안전하다고 한다.

  1. x1≤x≤x2x_1 \le x \le x_2,
  2. y1≤y≤y2y_1 \le y \le y_2,
  3. 어떤 연소 영역의 내부에도 들어 있지 않다. 즉 모든 1≤i≤N1 \le i \le N에 대해 (x,y)(x, y)와 (fxi,fyi)(fx_i, fy_i) 사이의 거리가 rir_i 이상이다.

두 감시탑의 위치는 안전함이 보장된다. 두 감시탑은 두 탑을 잇는 안전한 경로가 존재할 때, 그리고 그때만 정상적으로 통신할 수 있다. 경로가 안전하다는 것은 경로 위의 모든 점이 안전하다는 뜻이다. 여기서 경로란 연속인 곡선이며 직선일 필요는 없다.

두 감시탑이 정상적으로 통신할 수 있는지 판정하라.

입력

첫째 줄에 다섯 개의 정수 x1x_1, y1y_1, x2x_2, y2y_2, NN이 주어진다 (−1000000≤x1<x2≤1000000-1000000 \le x_1 < x_2 \le 1000000, −1000000≤y1<y2≤1000000-1000000 \le y_1 < y_2 \le 1000000, 0≤N≤10000 \le N \le 1000). 이는 두 감시탑의 위치 (x1,y1)(x_1, y_1), (x2,y2)(x_2, y_2)와 발화 지점의 개수이다. 다음 NN개의 줄에는 각각 세 개의 정수 fxifx_i, fyify_i, rir_i가 주어진다 (−1000000≤fxi,fyi≤1000000-1000000 \le fx_i, fy_i \le 1000000, 1≤ri≤20000001 \le r_i \le 2000000). 이는 ii번째 발화 지점의 중심과 연소 영역의 반지름이다. 서로 다른 발화 지점이 같은 중심을 공유하지 않음이 보장된다.

출력

두 감시탑이 정상적으로 통신할 수 있으면 한 줄에 "YES"를, 그렇지 않으면 "NO"를 출력한다 (따옴표 제외).

힌트

아래 그림은 두 감시탑을 잇는 안전한 경로의 예이다.

두 감시탑을 잇는 안전한 경로의 예

아래 그림은 안전한 경로가 존재하지 않는 경우의 예이다.

안전한 경로가 존재하지 않는 경우의 예

아래 두 그림은 두 감시탑을 잇는 안전한 경로의 또 다른 예이다. 위쪽 그림의 점 (10, 15)와 아래쪽 그림의 점 (10, 30)은 안전하다.

점 (10, 15)가 안전한 또 다른 경로의 위쪽 그림

점 (10, 30)이 안전한 또 다른 경로의 아래쪽 그림

예제3

  1. 예제 1

    입력
    -15 -10 15 10 5
    -20 7 9
    -2 3 6
    8 -3 4
    -1 -8 3
    -9 -1 3
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    2 10 18 30 3
    10 20 5
    10 29 5
    10 11 5
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    2 10 18 30 3
    10 20 5
    10 25 5
    10 10 5
    
    예상 출력
    YES