흑백 요리사

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

요약
두께 x_i인 스테이크를 각 면을 같은 횟수만큼 굽기 위해, x_i분의 배수 시점에만 뒤집을 수 있다는 조건에서 필요한 최소 시간을 구한다.
난이도

보통10점 중 7점

유형
수학, 정수론, 그리디, 시뮬레이션
정답자
아직 제출이 없습니다

문제

성현이는 요리 경연에 출전해 다음과 같은 혹평을 받게 된다.

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

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

두께 xx인 스테이크를 굽기 위해서는 반드시 한 면을 xx 분만큼 구운 후 뒤집어야 한다. xx 분이 지나지 않았는데 고기를 뒤집을 수는 없으며, xx 분이 지났는데도 뒤집지 않을 수는 없다.

성현이는 00분에 불판에 NN개의 스테이크를 모두 올려 동시에 굽기 시작했다. 굽는 도중에 일부 스테이크를 불판에서 제거할 수는 없으며, 굽기를 마칠 때는 NN개의 스테이크가 even 하게 익은 상태여야 한다.

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

입력

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

두 번째 줄에 각 스테이크의 두께인 양의 정수 x_ix\_i가 공백으로 구분되어 주어진다. (1≤x_i≤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