단열재
면접 대비시간 제한1초메모리 제한128 MB
주어진 n개의 양의 계수를 재배열해 합과 이웃한 층 사이의 증가분 합을 더한 값이 최대가 되도록 하고, 그 최댓값을 출력한다.
문제
Insumax 사는 여러 겹으로 이루어진 단열재를 만든다. 단열재는 개의 층으로 구성되며, 번째 층()은 양의 정수인 단열 계수 로 나타낸다. 층의 번호는 열이 빠져나가는 방향을 따라 매긴다.
heat -> || a1 | a2 | ... | ai | ai+1 | ... | an || ->
단열재 전체의 단열 계수 는 각 층의 단열 계수의 합으로 정해진다. 여기에 더해, 어떤 층 뒤에 그보다 단열 계수가 큰 층이 오면 두 값의 차이만큼 가 커진다. 정확히는 다음과 같이 정의한다.
예를 들어 층을 순서로 놓으면 이다.
주어진 층들의 단열 계수 을 적절히 배열하여 단열재 전체의 단열 계수 를 최대로 만들었을 때, 그 최댓값을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 층의 개수 이 주어진다(). 이어지는 개의 줄에 각 층의 단열 계수 이 한 줄에 하나씩 주어진다. 각 계수는 을 만족하는 정수이다.
출력
층을 적절히 배열했을 때 얻을 수 있는 단열재 전체의 단열 계수 의 최댓값을 한 줄에 하나의 정수로 출력한다.