아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Keep On Movin

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

요약
여러 종류의 문자가 각각 몇 개씩 주어질 때, 모든 문자를 팔린드롬 문자열로 나누어 가장 짧은 팔린드롬의 길이를 최대화한다.
난이도

보통10점 중 5점

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

문제

Zhang 교수에게는 nn종류의 문자가 있고, ii번째 문자의 개수는 aia_i이다. Zhang 교수는 모든 문자를 사용해 여러 개의 회문을 만들려고 한다. 그는 또한 가장 짧은 회문의 길이를 최대화하려고 한다.

예를 들어, 'a', 'b', 'c', 'd' 네 종류의 문자가 있고 각각의 개수가 {2,3,2,2}\{2, 3, 2, 2\}라고 하자. Zhang 교수는 ("acdbbbdca")를 만들거나, ("abbba"와 "cddc")를 만들거나, ("aca", "bbb", "dcd")를 만들거나, ("acdbdca"와 "bb")를 만들 수 있다. 첫 번째가 가장 짧은 회문의 길이가 99인 최적의 방법이다.

문자열을 양방향에서 읽어도 같으면 회문이라고 한다.

입력

여러 개의 테스트 케이스가 주어진다. 입력의 첫 줄에는 테스트 케이스의 수를 나타내는 정수 TT가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에는 문자의 종류 수를 나타내는 정수 nn (1≤n≤1051 \le n \le 10^5)이 주어진다. 둘째 줄에는 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n (0≤ai≤1040 \le a_i \le 10^4)이 주어진다.

테스트 케이스는 최대 110110개이고, 입력의 총 크기는 최대 66 메비바이트이다.

출력

각 테스트 케이스마다 답을 나타내는 정수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4
    4
    1 1 2 4
    3
    2 2 2
    5
    1 1 1 1 1
    5
    1 1 2 2 3
    
    예상 출력
    3
    6
    1
    3