만드는 중입니다

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

주사위로 만드는 가장 긴 스트레이트

면접 대비

메모리 제한1024 MB

요약
주사위마다 면의 수 S_i가 주어질 때, 각 주사위가 연속된 정수를 하나씩 보여 만들 수 있는 가장 긴 연속 수열의 주사위 개수를 구합니다.
난이도

보통10점 중 5점

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

문제

가장 흔한 주사위는 면이 6개이며, 각 면에 1부터 6까지의 서로 다른 정수가 하나씩 적혀 있다. 다른 종류의 주사위를 쓰는 게임도 많다. dkdk는 면이 k개k개이고, 각 면에 1부터 kk까지의 서로 다른 정수가 하나씩 적힌 주사위다. d6d6은 일반적인 주사위이고, d4d4는 면이 4개이며, d1000000d1000000은 면이 백만 개다.

NN개의 주사위로 시작한다. ii번째 주사위는 dSidS_i이며, 1부터 SiS_i까지의 정수가 적힌 면을 SiS_i개 가진다. xx에서 시작하는 길이 ℓ\ell의 스트레이트는 정수 목록 x,x+1,…,x+(ℓ−1)x, x+1, \dots, x+(\ell-1)이다. 주사위를 일부 또는 전부 골라 각 주사위에서 숫자를 하나씩 뽑아 스트레이트를 만든다. 만들 수 있는 가장 긴 스트레이트의 길이는 얼마인가?

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다. 첫 줄에는 주사위의 개수 NN이 주어진다. 둘째 줄에는 NN개의 정수 S1,S2,…,SNS_1, S_2, \dots, S_N이 주어지며, 각 정수는 서로 다른 주사위의 면 수다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. xx는 테스트 케이스 번호(1부터 시작)이고, yy는 스트레이트에 사용할 수 있는 주사위 개수의 최댓값이다.

제한

1≤T≤1001 \le T \le 100.

힌트

1번 예제에서는 주사위 4개를 모두 사용해 스트레이트를 만드는 방법이 여러 가지다. 그중 한 가지가 위 그림에 나와 있다.

2번 예제에서는 어떤 주사위도 5보다 큰 수를 보여 줄 수 없으므로, 스트레이트에 주사위 5개보다 많은 수를 쓸 수 없다. 정확히 주사위 5개로 스트레이트를 만드는 방법은 여러 가지다. 예를 들어 두 d5에서 각각 4와 5를 고르고, 세 d4에서 1, 2, 3을 골라 1, 2, 3, 4, 5를 만들 수 있다.

3번 예제에서는 1부터 9까지의 스트레이트가 가능하다. d4 하나를 버리고, 남은 d4들과 d5, d6으로 1부터 4까지를 얻는다. d7들로 5부터 7까지를, d10들로 8과 9를 얻는다. 길이 10의 스트레이트는 만들 수 없으므로 이것이 최선이다.

4번 예제에서는 길이 1의 스트레이트만 만들 수 있으며, 주어진 d10에서 어떤 정수를 고르든 된다.

예제1

  1. 예제 1

    입력
    4
    4
    6 10 12 8
    6
    5 4 5 4 4 4
    10
    10 10 7 6 7 4 4 5 7 4
    1
    10
    
    예상 출력
    Case #1: 4
    Case #2: 5
    Case #3: 9
    Case #4: 1