만드는 중입니다

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

흑백 요리사

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

요약
두께가 1에서 25 사이인 스테이크 N개를 양면이 같은 횟수와 같은 시간만큼 익도록 굽는 최소 시간을 구합니다.
난이도

보통10점 중 7점

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

문제

성현이는 요리 경연에 출전했다가 다음과 같은 혹평을 들었다.

이 보섭살은 잘못 구워졌어요. 고기가 even 하게 익지 않았어요.

성현이는 다음 시즌 요리 경연에도 참여하기로 했고, 이번에는 고기를 even 하게 굽기로 했다. 그런데 even의 뜻을 잘못 이해한 성현이는 스테이크를 짝수 번 구우려고 한다. 즉, 각 스테이크의 앞면과 뒷면을 같은 횟수만큼, 그리고 한 번 이상 굽는다. 또한 양면이 같은 시간만큼 구워져야 한다.

두께 xx인 스테이크를 구우려면 한 면을 정확히 xx분 동안 구운 뒤 뒤집어야 한다. xx분이 지나기 전에는 뒤집을 수 없고, xx분이 지났는데도 뒤집지 않고 둘 수는 없다.

성현이는 00분에 불판 위에 스테이크 NN개를 모두 올려 동시에 굽기 시작한다. 굽는 도중에는 스테이크를 불판에서 치울 수 없고, 굽기를 마칠 때는 NN개의 스테이크가 모두 even 하게 익어 있어야 한다.

고기를 너무 오래 구우면 질겨지므로, 성현이는 조건을 만족하면서 모든 스테이크를 가장 빨리 굽고 싶어 한다. 성현이는 몇 분 동안 스테이크를 구워야 할까?

입력

첫 번째 줄에 스테이크의 개수 NN이 주어진다. (1≤N≤200 000)(1 \leq N \leq 200\,000)

두 번째 줄에 각 스테이크의 두께인 양의 정수 xix_i가 공백으로 구분되어 주어진다. (1≤xi≤25)(1 \leq x_i \leq 25)

출력

성현이가 모든 스테이크를 even 하게 굽기 위해 필요한 최소 시간을 분 단위로 출력한다.

힌트

C/C++의 경우, 32bit 정수형 int의 범위를 넘어가는 정수를 다루게 되므로 64bit 정수형 long long 사용을 권장한다.

예제3

  1. 예제 1

    입력
    3
    1 2 3
    
    예상 출력
    12
    
  2. 예제 2

    입력
    4
    1 3 5 7
    
    예상 출력
    210
    
  3. 예제 3

    입력
    9
    9 11 13 15 17 19 21 23 25
    
    예상 출력
    3346393050