바닥에 고정된 순서로 놓인 최대 500개 원기둥을 양쪽에서 밀착시킬 때 벽 사이 최소 거리를 계산합니다.
보통6동적 계획법기하아직 제출이 없습니다시간 제한1초메모리 제한256 MB야적장 평평한 바닥에 무거운 금속 원기둥 여러 개가 놓여 있다. 길이는 모두 같고 지름은 서로 다를 수 있다. 원기둥의 두 밑면은 나란히 정렬되어 있고 축 방향도 모두 같다.
이 원기둥이 차지하는 면적을 최소로 줄이려 한다. 원기둥은 너무 무거워서 들어 올릴 수 없지만 굴리기는 어렵지 않으므로, 양쪽에서 높은 벽 두 개로 밀기로 했다.
원기둥을 끝까지 밀어 붙였을 때 두 벽 사이의 거리가 최소 얼마가 되는지 구하라. 원기둥끼리 서로 닿아도 되고 벽에 닿아도 된다. 원기둥을 바닥에서 들어 올릴 수는 없으므로 놓인 순서는 바꿀 수 없다.

그림 B.1. 두 벽 사이의 원기둥
입력은 테스트 케이스 하나로 이루어진다.
첫째 줄에 원기둥의 개수 N (1≤N≤500)이 주어진다.
둘째 줄에 원기둥의 반지름 N개가 한쪽 끝에서 반대쪽 끝까지 놓인 순서대로 주어진다. 반지름은 모두 1 이상 10000 이하의 정수다.
원기둥을 끝까지 밀어 붙였을 때 두 벽 사이의 거리를 한 줄에 출력한다.
소수점 아래 일곱째 자리에서 반올림해 소수점 아래 여섯 자리까지 출력한다. 값이 정수여도 소수점 아래 여섯 자리를 모두 적는다. 예를 들어 거리가 40이면 40.000000을 출력한다.
아래 세 그림은 차례로 첫 번째, 두 번째, 세 번째 예제에 해당한다.
![]() | ![]() | ![]() |
| 그림 B.2. 첫 번째 예제 | 그림 B.3. 두 번째 예제 | 그림 B.4. 세 번째 예제 |