만드는 중입니다

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

거대한 덮개

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

요약
직사각형 캠퍼스 위에 놓인 상자들을 모두 덮으면서 캠퍼스 경계 지면에 고정되고 볼록한 곡면의 최소 표면적을 구한다.
난이도

어려움10점 중 9점

유형
기하, 수학, 그리디, 구현
정답자
아직 제출이 없습니다

문제

뤼트여브룩 공과대학교의 한 학생이 캠퍼스의 건물을 모두 반투명 플라스틱 덮개 하나로 덮으려고 한다. 그러면 이 일대에서 우산을 쓸 일이 없어져 비용이 크게 줄어든다.

덮개 값은 넓이에 비례하므로 학생은 넓이가 가장 작은 덮개를 원한다. 그 최소 넓이를 계산하는 프로그램을 작성하라.

캠퍼스 부지는 평평한 직사각형이다. 건물은 모두 지면 위에 놓인 직육면체의 합집합이고, 직육면체끼리 겹칠 수 있다. 덮개는 건물을 남김없이 덮어야 하며 캠퍼스의 네 변에 지면 높이로 고정된다.

덮개는 팽팽하게 당겨져 있다. 즉 덮개와 지면이 둘러싸는 입체는 볼록하다. 이 조건을 만족하는 덮개 중에서 넓이가 가장 작은 것의 넓이를 구하라. 지면 직사각형 자체는 넓이에 포함하지 않는다.

입력

첫 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.

  • 한 줄에 공백으로 구분된 정수 네 개 x1x_1, y1y_1, x2x_2, y2y_2가 주어진다. 캠퍼스 부지는 [x1,x2]×[y1,y2][x_1, x_2] \times [y_1, y_2]이고, −104≤x1<x2≤104-10^4 \le x_1 < x_2 \le 10^4, −104≤y1<y2≤104-10^4 \le y_1 < y_2 \le 10^4이다.
  • 다음 줄에 건물을 이루는 직육면체의 개수 nn이 주어진다. 0≤n≤4000 \le n \le 400이다.
  • 이어지는 nn개 줄 가운데 ii번째 줄에 공백으로 구분된 정수 다섯 개 aia_i, bib_i, cic_i, did_i, hih_i가 주어진다. 밑면이 [ai,ci]×[bi,di][a_i, c_i] \times [b_i, d_i]이고 높이가 hih_i인 직육면체를 뜻한다. x1≤ai<ci≤x2x_1 \le a_i < c_i \le x_2, y1≤bi<di≤y2y_1 \le b_i < d_i \le y_2, 0<hi≤1040 < h_i \le 10^4이다.

여기서 [a,c]×[b,d][a, c] \times [b, d]는 데카르트 곱이며, a≤x≤ca \le x \le c이고 b≤y≤db \le y \le d인 점 (x,y)(x, y) 전체가 이루는 직사각형 영역이다.

출력

각 테스트 케이스마다 최소 덮개의 넓이를 소수점 아래 넷째 자리까지 한 줄에 출력한다. 반올림은 통상적인 방식을 따른다. 버릴 자리의 첫 숫자가 5 이상이면 올리고, 그렇지 않으면 내린다.

예제2

  1. 예제 1

    입력
    3
    0 0 12 10
    0
    0 0 12 10
    1
    2 2 8 8 3
    0 0 12 10
    2
    2 4 10 8 3
    4 2 8 6 5
    
    예상 출력
    120.0000
    169.7443
    203.7598
    
  2. 예제 2

    입력
    2
    0 0 4 5
    1
    0 0 4 5 2
    -3 -4 3 4
    0
    
    예상 출력
    56.0000
    48.0000