귀찮음

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

요약
전체 길이 막대를 주어진 길이의 막대로 자를 때 비용 xy로 최소 비용을 구합니다. 비용은 길이의 제곱합으로 정해지므로 길이를 읽어 계산합니다.
난이도

어려움10점 중 8점

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

문제

현우는 무슨 이유에선지 길이 a1,…,ana_1, \dots, a_n인 쇠막대 nn개가 필요해졌다. 하지만 그가 가진 것은 길이 a1+⋯+ana_1 + \cdots + a_n인 쇠막대 하나뿐이었다. 현우는 이 막대를 직접 잘라서 원래 필요하던 nn개의 쇠막대를 만들 것이다. 길이 x+yx+y인 막대를 길이 xx, yy인 두 막대로 자를 때에는 만들려 하는 두 막대의 길이의 곱인 xyxy의 비용이 든다. 현우는 최소의 비용으로 이 쇠막대를 잘라 a1,…,ana_1, \dots, a_n의 nn개의 쇠막대를 얻고 싶다.

그런데 현우는 이 비용이 얼마나 들지 잘 모르겠다. 그래서 여러분이 막대를 자르는 최소 비용을 계산하는 프로그램을 작성해주면 코드잼 경시대회 점수를 30점 올려주겠다고 제안했다. 어떤가?

입력

첫째 줄에는 현우가 원하는 쇠막대의 수를 나타내는 정수 nn이 주어진다. (1≤n≤500,0001 \le n \le 500{,}000)

둘째 줄에는 현우가 원하는 쇠막대의 길이를 나타내는 정수 a1,…,ana_1, \dots, a_n이 주어진다. (1≤ai≤1011 \le a_i \le 101)

출력

현우가 필요한 nn개의 쇠막대를 얻는 최소의 비용을 출력한다.

예제2

  1. 예제 1

    입력
    4
    3 5 4 2
    
    예상 출력
    71
    
  2. 예제 2

    입력
    10
    12 43 22 51 2 55 8 21 98 50
    
    예상 출력
    55164