캔버스 색칠

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

요약
캔버스를 한 줄로 늘어놓고 한 색 그룹을 둘로 나누는 과정을 반복해 모든 캔버스가 서로 다른 색을 갖도록 총 잉크 사용량을 최소화합니다.
난이도

보통10점 중 5점

유형
그리디, 힙
정답자
아직 제출이 없습니다

문제

지난해의 성공 이후 사무엘 W. E. R. 크래프트는 이름이 더 널리 알려졌고, 이제 머릿속에 떠오르는 기획을 모두 실행할 자금이 있다. 이번 기획은 같은 색이 두 번 나오지 않도록 칠한 캔버스를 한 줄로 늘어놓는 것이다.

사무엘은 크기가 제각각인 흰색 캔버스를 여러 장 샀다. 손으로 칠하면 시간이 너무 오래 걸리므로, 칠하는 작업을 자동으로 처리하는 커다란 기계를 만들었다. 기계는 다음 순서로 동작한다.

  1. 캔버스를 원하는 순서로 골라 기계의 컨베이어 벨트 위에 한 줄로 놓는다.
  2. 색 CC와, 그때 색 CC인 캔버스의 수보다 작은 수 FF를 고른다.
  3. 왼쪽에서 오른쪽으로 가면서 색 CC인 캔버스를 모두 다시 칠한다. 앞쪽 FF장은 새로운 색 XX로, 나머지는 새로운 색 YY로 칠한다. XX와 YY는 기계가 정하며, 서로 다르고 지금까지 쓴 어떤 색과도 다르다. 이 단계에서 쓰는 잉크의 양은 다시 칠한 캔버스의 크기의 합과 같다.
  4. 모든 캔버스의 색이 서로 달라질 때까지 2번과 3번을 반복한다.

예를 들어 사무엘이 크기가 3, 5, 5, 7인 캔버스 네 장을 샀다고 하자. 아래 그림은 칠하는 방법 두 가지를 보여 준다.

캔버스를 칠하는 두 가지 방법

사무엘이 산 캔버스의 크기가 주어질 때, 모든 캔버스의 색을 서로 다르게 만드는 데 기계가 쓰는 잉크의 최솟값을 구하라.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 두 줄이다. 첫째 줄에 캔버스의 수 NN이 주어지고, 둘째 줄에 캔버스 NN장의 크기가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스마다 한 줄씩, 모든 캔버스의 색을 서로 다르게 만드는 데 필요한 잉크의 최솟값을 출력한다. 출력은 모두 TT줄이다.

제한

  • 1≤T≤1001 \le T \le 100, 테스트 케이스의 수
  • 1≤Ni≤1000001 \le N_i \le 100000, ii번째 테스트 케이스의 캔버스 수
  • 1≤s≤1000001 \le s \le 100000, 캔버스 한 장의 크기
  • 1≤∑i=1TNi≤1000001 \le \sum_{i=1}^{T} N_i \le 100000, 입력 파일 하나에 들어 있는 캔버스 수의 합

예제3

  1. 예제 1

    입력
    2
    3
    7 4 7
    4
    5 3 7 5
    
    예상 출력
    29
    40
    
  2. 예제 2

    입력
    1
    1
    1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1
    2
    100000 100000
    
    예상 출력
    200000