포트홀

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

요약
직사각형 부지에 밧줄을 직선으로 걸쳐 구멍을 지나지 않게 놓아 양쪽 구멍 넓이 합이 최대한 같아지도록 위치를 정한다.
난이도

어려움10점 중 9점

유형
기하, 정렬, 이분 탐색, 구현
정답자
아직 제출이 없습니다

문제

당신은 다른 회사와 경쟁하여 도시의 도로에 생긴 포트홀(pothole, 파인 구멍)을 메우는 시(市) 계약을 따내려고 합니다.

시는 승자를 정하기 위해, 포트홀이 많이 난 직사각형 주차장에서 어느 회사가 더 빨리 일하는지를 겨루는 대회를 엽니다.

당신은 밧줄을 주차장의 한 변에서 맞은편 변까지 일직선으로 팽팽하게 쳐서, 주차장을 두 개의 더 작은 직사각형으로 나누어야 합니다. 그러면 상대 회사가 두 구역 중 한쪽을 골라 일하고, 당신은 나머지 한쪽에서 일합니다. 따라서 당신은 두 구역의 작업량(포트홀들의 총 넓이)이 최대한 비슷해지도록 밧줄을 놓고 싶습니다.

포트홀은 원으로 표현합니다. 어떤 두 포트홀도 서로 겹치지 않으며, 어떤 포트홀도 주차장의 경계와 겹치지 않습니다. 밧줄은 포트홀을 가로질러서는 안 되지만, 포트홀이나 다른 포트홀, 또는 주차장의 경계에 접하는 것은 허용됩니다.

입력

입력은 하나 이상의 문제 집합으로 이루어집니다.

각 문제 집합은 다음과 같이 주어집니다.

  • 첫 줄에는 주차장의 너비 xx와 높이 yy가 두 개의 양의 실수로 주어집니다.
  • 그다음 두 줄 이상에는 각 포트홀의 정보가 주어집니다. 각 줄은 세 개의 음이 아닌 실수로 이루어지며, 순서대로 포트홀 중심의 xx 좌표, yy 좌표, 그리고 반지름입니다. 좌표계의 원점은 주차장의 한 모서리입니다.
  • 세 개의 0을 공백으로 구분한 줄(0 0 0)이 나오면 해당 문제 집합이 끝납니다.

마지막 문제 집합 뒤에, 다음 주차장 정보가 와야 할 자리에 두 개의 0을 공백으로 구분한 줄(0 0)이 나오면 전체 입력이 끝납니다.

각 문제 집합에 대해, 밧줄 양쪽의 포트홀 총 넓이가 최대한 비슷해지도록 밧줄을 놓을 위치를 정하세요. 밧줄은 어떤 포트홀도 통과할 수 없지만, 포트홀에 접하는 것은 허용됩니다.

출력

각 문제 집합마다 다음 한 줄을 출력합니다.

x1 y1 x2 y2

여기서 (x1,y1)(x_1, y_1)과 (x2,y2)(x_2, y_2)는 밧줄이 주차장 경계와 만나는 두 점입니다. 두 점은 x1≤x2x_1 \le x_2이고 y1≤y2y_1 \le y_2가 되도록 순서를 맞춰 출력합니다. 각 좌표는 소수점 아래 한 자리까지 출력하며, 값 사이는 공백 하나로 구분합니다.

이 두 점은 밧줄이 포트홀들을 총 넓이가 최대한 비슷한 두 무리로 나누도록 선택해야 합니다.

포트홀 넓이를 똑같이 비슷하게 나누는 밧줄 위치가 여러 개라면, 다음 순서로 동점을 처리합니다.

  1. 주차장 자체를 넓이가 같은 두 부분으로 가장 가깝게 나누는 위치를 고릅니다.
  2. 그래도 동점이면, 주차장의 x축과 만나는 밧줄(즉, y축과 평행한 밧줄)을 우선합니다.
  3. 그래도 동점이면, x 좌표가 더 작은 위치를 고릅니다.

예제3

  1. 예제 1

    입력
    16.0 12.0
    1.0 1.0 0.8
    8.0 6.0 2.0
    3.0 5.0 1.0
    3.0 9.0 1.0
    0 0 0
    0 0
    
    예상 출력
    6.0 0.0 6.0 12.0
    
  2. 예제 2

    입력
    10.0 10.0
    2.0 5.0 1.0
    7.0 5.0 1.0
    0 0 0
    0 0
    
    예상 출력
    5.0 0.0 5.0 10.0
    
  3. 예제 3

    입력
    10.0 10.0
    2.0 2.0 1.0
    2.0 8.0 1.0
    0 0 0
    0 0
    
    예상 출력
    0.0 5.0 10.0 5.0