만드는 중입니다

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

원판 배치

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

요약
주어진 반지름의 원판들을 x축 위에 한 줄로 놓아 이웃한 원판끼리 닿게 하고, 전체 가로 길이의 최솟값을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 정렬, 그리디
정답자
아직 제출이 없습니다

문제

nn개의 원판을 평면에 놓아 각 원판이 위쪽에서 x축에 닿고, 두 원판이 겹치지 않도록 합니다. 유효한 배치에서 각 원판은 가장 낮은 점에서 x축에 닿으며, 이 점을 원판의 바닥점이라고 합니다. 바닥점들이 원판에 왼쪽에서 오른쪽으로 가는 선형 순서를 정합니다. 선형 인스턴스는 원판들의 집합 {D1,D2,…,Dn}\{D_1, D_2, \ldots, D_n\}으로, 원판들의 모든 순서 σ\sigma, 즉 Dσ(1)Dσ(2)…Dσ(n)D_{\sigma(1)} D_{\sigma(2)} \ldots D_{\sigma(n)}에 대해 배치가 존재하는 집합입니다. 이 배치에서 Dσ(i)D_{\sigma(i)}는 Dσ(i−1)D_{\sigma(i-1)}과 Dσ(i+1)D_{\sigma(i+1)}에만 닿습니다. 다만 Dσ(1)D_{\sigma(1)}은 Dσ(2)D_{\sigma(2)}에만, Dσ(n)D_{\sigma(n)}은 Dσ(n−1)D_{\sigma(n-1)}에만 닿습니다. 그림 C.1은 선형 인스턴스이고, 그림 C.2는 선형 인스턴스가 아닌 예입니다. 가장 큰 반지름과 가장 작은 반지름의 비가 4보다 작으면 원판들은 선형 인스턴스를 이루므로, 입력은 모두 이 조건을 만족합니다. 주어진 선형 인스턴스에서 원판들의 가장 왼쪽 점과 가장 오른쪽 점 사이의 수평 거리가 최소가 되는 유효한 배치를 찾습니다(그림 C.3).

그림 C.1 그림 C.2

그림 C.3

입력

첫 줄에 원판의 개수를 나타내는 정수 nn (1≤n≤1,0001 \le n \le 1{,}000)이 주어집니다. 둘째 줄에는 각 원판의 반지름 aa (1≤a≤1,000,0001 \le a \le 1{,}000{,}000)인 정수 nn개가 주어집니다. 가장 큰 반지름과 가장 작은 반지름의 비는 4보다 작습니다.

출력

모든 유효한 배치에서 원판의 가장 왼쪽 점과 가장 오른쪽 점 사이 수평 거리의 최솟값 OPTOPT를 실수 zz로 한 줄에 출력합니다. zz는 정수부, 소수점, 소수부의 형식으로 출력하며, OPT−10−5<z<OPT+10−5OPT - 10^{-5} < z < OPT + 10^{-5}를 만족해야 합니다.

예제2

  1. 예제 1

    입력
    4
    4 2 7 6
    
    예상 출력
    34.99452
    
  2. 예제 2

    입력
    5
    13 7 4 15 10
    
    예상 출력
    90.14124