시추
면접 대비시간 제한1초메모리 제한128 MB
선분 위 n개 지점의 시추 비용이 주어질 때, 적응적으로 시추해 저유층 경계를 찾는 최악의 경우 총 시간의 최솟값을 구한다.
문제
바이트맨(Byteman)은 원유 매장층을 찾는 팀을 이끌고 있다. 팀은 이미 시추공을 두 개 뚫어, 지점 에서는 원유를 발견했고 지점 에서는 원유가 없음을 확인했다. 매장층은 한쪽 끝이 정확히 에 있는, 선분 의 연결된 한 조각을 차지한다. 이제 바이트맨은 매장층이 를 따라 어디까지 뻗어 있는지 알아내야 한다.
이 일은 간단하지 않다. 위치마다 시추 속도가 다르고, 팀은 한 번에 한 곳에서만 시추할 수 있기 때문이다. 바이트맨은 최악의 경우 매장층의 경계를 확정하는 데 시간이 얼마나 필요한지 미리 알고 싶어 한다.
선분 를 길이가 같은 개의 조각으로 나눈다. 를 좌표 , 를 좌표 에 두면, 후보 지점들은 좌표 에 놓인다. 원유는 좌표 (지점 )까지는 있지만 좌표 (지점 )에는 없으므로, 경계는 중에서 아직 원유가 있는 가장 큰 좌표이다(그런 좌표가 하나도 없으면 경계는 이다). 지점 에 시추공을 뚫는 데는 만큼의 시간이 걸리며, 그곳에 원유가 있는지 없는지를 알려 준다.
최악의 경우 매장층의 경계를 확정하는 데 드는 총 시간을 최소로 만드는 시추 계획을 세우고, 그 시간을 구하라.
입력
첫째 줄에 정수 이 주어진다 ().
둘째 줄에 개의 정수 이 공백 하나로 구분되어 주어진다 ().
출력
바이트맨이 매장층의 경계를 반드시 확정할 수 있게 하는, 최악의 경우 총 시추 시간의 최솟값을 정수 하나로 출력하라.
힌트
바이트맨이 지점 을 먼저 시추한다고 하자. 여기에 시간 이 든다. 만약 그곳에서 원유가 나오면 매장층이 오른쪽으로 얼마나 뻗는지를 여전히 알아내야 하고, 이때 최악의 경우 두 번의 시추가 더 필요해 이 들어 합계는 가 된다.
지점 에서 시작하는 편이 더 낫다. 지점 에 원유가 없으면 지점 만 확인하면 끝난다. 원유가 있으면 최악의 경우 지점 과 를 시추하여 총 시간 로 마친다. 따라서 이 예제에서는 가 최적이다.