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

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

고정 지능 분할 대회 운영

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

요약
최대 10개의 문제를 최대 3명의 팀원에게 배정하고 각자의 작업 순서를 정해 완료 시간 합을 최소화한다. 문제의 소요 시간은 해결하는 팀원의 밝기에 따라 달라진다.
난이도

보통10점 중 6점

유형
완전 탐색, 동적 계획법, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

한 팀의 전체 지적 능력은 여러 명의 팀원에게 나누어져 있습니다. 각 팀원은 고정된 양의 ‘지능(밝기)’을 가지며, 팀원마다 그 값이 다를 수 있습니다. 모든 팀원의 지능을 합하면 팀 전체의 지적 능력이 됩니다.

여러 개의 문제가 주어지면, 팀은 각 문제를 팀원에게 배정하여 동시에 풀 수 있도록 해야 합니다. 이때 한 팀원은 같은 시각에 두 문제를 동시에 풀 수 없으며, 문제는 자신의 최소 지능 요구치 이상인 팀원에게만 배정할 수 있습니다. 각 문제를 푸는 데 걸리는 시간은 그 문제를 맡은 팀원의 지능에 따라 달라집니다. 즉, 지능이 더 높은 팀원에게 맡기면 풀이 시간이 짧아질 수도, 오히려 길어질 수도 있습니다.

모든 문제는 대회 시작 시각인 시각 00에 동시에 제출됩니다. 한 문제의 풀이 시간(solution time)은 그 문제가 해결된 시각을 뜻합니다(제출 시각이 00이므로 해결된 시각과 같습니다).

각 문제를 어떤 팀원에게 배정하고 각 팀원이 맡은 문제들을 어떤 순서로 풀지를 정하여(한 팀원이 두 문제를 동시에 풀지 않도록), 모든 문제의 풀이 시간의 합을 최소로 만드는 것이 목표입니다.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫 줄에는 두 정수 mm과 nn이 주어집니다. mm은 팀원의 수(1≤m≤31 \le m \le 3)이고, nn은 풀어야 할 문제의 수(1≤n≤101 \le n \le 10)입니다.

다음 줄에는 mm개의 양의 정수가 주어지며, 각 팀원의 지능을 순서대로 나타냅니다.

이어지는 nn개의 줄은 각 문제의 ‘시간-지능 관계’를 나타냅니다. 각 줄은 양의 정수 kk(k≤10k \le 10)로 시작하고, 그 뒤에 kk개의 양의 정수 쌍 s1 t1 s2 t2 … sk tks_1\ t_1\ s_2\ t_2\ \dots\ s_k\ t_k가 주어집니다. 이 값들은 1≤i<k1 \le i < k에 대해 si<si+1s_i < s_{i+1}을 만족합니다. 문제의 최소 지능 요구치는 s1s_1이며, 지능이 이보다 작은 팀원은 그 문제를 풀 수 없습니다. 지능이 ss인 팀원이 이 문제를 풀 때, 어떤 ii에 대해 si≤s<si+1s_i \le s < s_{i+1}이면 풀이 시간은 tit_i입니다. 지능이 sks_k 이상이면 풀이 시간은 tkt_k입니다.

마지막 테스트 케이스 다음에는 두 정수 0 00\ 0이 담긴 줄이 오며, 이는 입력의 끝을 나타냅니다.

각 문제는 다른 팀원이 같은 시각에 몇 개의 문제를 풀고 있든 상관없이, 해당 지능에 대해 정해진 시간만큼 정확히 걸려서 해결된다고 가정합니다. 어떤 문제의 지능 요구치도 가장 지능이 높은 팀원의 지능을 넘지 않습니다.

출력

각 테스트 케이스마다 한 줄에 Case X: T 형식으로 출력합니다. 여기서 XX는 테스트 케이스 번호(11부터 시작하여 차례로 11씩 증가)이고, TT는 모든 문제의 풀이 시간 합의 최솟값입니다. 즉, 유효한 모든 배정과 풀이 순서를 통틀어 nn개 문제의 풀이 시간을 모두 더한 값 중 가장 작은 값을 정수로 출력합니다.

예제1

  1. 예제 1

    입력
    2 4
    40 60
    1 35 4
    1 20 3
    1 40 10
    1 60 7
    3 5
    10 20 30
    2 10 50 12 30
    2 10 100 20 25
    1 25 19
    1 19 41
    2 10 18 30 42
    0 0
    
    예상 출력
    Case 1: 31
    Case 2: 177