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

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

구인 공고

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

요약
학생마다 순위를 매긴 네 개의 일자리 중 하나를 배정하되 일자리별 정원과 학년별 가중치를 지키면서 만족도 합을 최대로 만든다.
난이도

보통10점 중 6점

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

문제

당신의 대학에는 학생들이 지원할 수 있는 일자리가 있으며, 행정처는 전체 만족도가 최대가 되도록 학생을 일자리에 배정하는 일을 도와줄 사람이 필요합니다. 학생들은 원하는 자리를 선호 순서대로 고르고, 각 학생은 그중 하나의 자리에 배정됩니다.

각 학생은 선호하는 순서대로 네 개의 자리를 선택합니다. 첫 번째가 가장 원하는 자리이고, 두 번째는 그다음으로 원하는 자리이며(첫 번째 자리를 배정받지 못했을 때 사용), 이런 식으로 이어집니다.

학생에게는 학년에 따른 우선순위가 있습니다. 3학년 학생의 선택은 1학년 학생의 선택보다 더 큰 가중치를 가집니다.

행정처는 다음 만족도 표를 사용하기를 원합니다.

자리 선호 순위1순위2순위3순위4순위
1학년 학생4321
2학년 학생8765
3학년 학생1211109

모든 학생의 만족도 합이 최대가 되도록 학생을 자리에 배정하세요. 각 학생은 반드시 하나의 자리를 배정받아야 하지만, 모든 자리가 채워질 필요는 없습니다.

입력

입력에는 여러 개의 테스트 케이스가 있습니다.

각 테스트 케이스는 두 정수 nn (4≤n≤1404 \le n \le 140)과 mm (1≤m≤701 \le m \le 70)으로 시작합니다. 여기서 nn은 구인 공고의 수, mm은 학생의 수입니다. 이어지는 nn개의 줄에는 각각 정수 pp (1≤p≤101 \le p \le 10)가 주어지며, 이는 해당 공고에서 배정 가능한 자리의 수입니다. 공고는 00번부터 n−1n-1번까지 순서대로 나열됩니다.

그다음 mm개의 줄에는 학생 정보가 주어집니다. 각 줄에는 다섯 개의 정수가 있습니다.

y c1 c2 c3 c4

여기서 yy (y∈{1,2,3}y \in \{1, 2, 3\})는 학생의 학년이고, c1,c2,c3,c4c_1, c_2, c_3, c_4 (0≤ci<n0 \le c_i < n, 네 값 모두 서로 다름)는 학생이 선호 순서대로 고른 공고 번호입니다.

모든 테스트 케이스에서, 각 학생이 자신의 선택 목록에 있는 공고 중 하나를 배정받을 수 있는 배정이 반드시 존재함이 보장됩니다.

입력은 두 개의 0이 적힌 줄로 끝납니다.

출력

각 테스트 케이스마다 달성 가능한 최대 만족도를 정수 하나로 출력하세요. 불필요한 공백을 출력하지 말고, 답 사이에 빈 줄을 출력하지 마세요.

예제3

  1. 예제 1

    입력
    4 4
    1
    1
    1
    1
    1 0 1 2 3
    2 0 1 2 3
    3 0 1 2 3
    3 0 1 2 3
    4 4
    4
    4
    4
    4
    1 0 1 2 3
    2 0 1 2 3
    3 0 1 2 3
    3 0 1 2 3
    0 0
    
    예상 출력
    30
    36
    
  2. 예제 2

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

    입력
    4 3
    1
    1
    1
    1
    1 0 1 2 3
    1 0 1 2 3
    1 0 1 2 3
    0 0
    
    예상 출력
    9