GPA

시간 제한2초메모리 제한512 MB

요약
과목별 학점과 전공 필수 과목, 학생별 성적이 주어질 때 각 학생의 전체 GPA와 모든 필수 과목을 이수한 전공의 GPA를 출력한다.
난이도

보통10점 중 4점

유형
해시맵, 문자열, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

많은 학생에게 졸업할 때 중요한 것은 단 하나의 숫자, 바로 GPA다. 하지만 많은 고용주는 CSCI나 EE 학생이 "종이접기 입문"에서 어떤 성적을 받았는지에는 그다지 관심이 없는 듯하다. 그보다는 CSCI104, CSCI270, CSCI360에서의 성적을 더 신경 쓰는 것 같다. 이상한 일이다. 그 결과 "전공 GPA"라는 것이 생겼는데, 여기에는 "전공에 포함되는" 과목만 들어간다. 그런데 복수전공이나 삼중전공을 하고 있다면, 여러 전공의 GPA를 모두 계산하는 일은 꽤 시간이 많이 걸린다. 이런 일은 컴퓨터가 하는 게 맞지 않은가? 사실 그렇다. 지적해 줘서 고맙다!

어떤 대학의 전체 교과목 목록(과목 이름과 학점)과 각 전공의 전공 요건이 주어진다. 그다음에는 학생 목록이 주어지고, 각 학생이 수강한 모든 과목과 받은 성적이 주어진다. 각 학생에 대해 전체 GPA와, 그 학생이 모든 요건을 충족한 각 전공의 GPA를 출력한다. GPA는 가중 평균이다. 학생이 수강한 각 과목에 대해 학생의 성적(0.0에서 4.0 사이의 수)에 그 과목의 학점을 곱한다. 마지막으로 이 가중 성적의 합을 학생이 수강한 총 학점으로 나눈다. 이것이 학생의 GPA다. 전공 GPA도 비슷하지만, 해당 전공에 관련된 과목만 합산한다.

입력

첫째 줄에는 입력 데이터 세트의 수 1≤K≤1001 \le K \le 100이 주어진다. 그다음에는 다음과 같은 형식의 데이터 세트 KK개가 이어진다.

데이터 세트의 첫째 줄에는 세 정수 1≤C≤100001 \le C \le 10000, 1≤M≤5001 \le M \le 500, 1≤s≤10001 \le s \le 1000이 주어진다. 이는 각각 과목의 수, 전공의 수, 졸업하는 학생의 수다.

그다음에는 CC개의 줄이 이어지며, 각 줄은 과목 ii의 이름 nin_i와 학점 uiu_i를 준다. 이름은 2~4개의 대문자 뒤에 정확히 3자리 숫자가 바로 이어진다. 학점은 1 이상 6 이하의 정수다.

다음에는 MM개의 전공이 주어진다. 전공 jj의 첫째 줄에는 2~4개의 대문자로 된 문자열(전공 이름)과, 그 전공이 요구하는 과목 수 rj≥1r_j \ge 1(정수)가 주어진다. 그다음에는 rjr_j개의 줄이 이어지며, 각 줄에는 과목 이름이 정확히 하나씩 들어 있다. 과목 이름은 처음 CC개 줄에 나온 올바른 이름이다. 어떤 전공의 총 학점도 최대 128을 넘지 않는다.

마지막으로 ss명의 학생이 주어진다. 각 학생 kk에 대해, 먼저 그 학생이 수강한 과목 수 tk≥1t_k \ge 1(정수)가 주어진다. 그다음에는 tkt_k개의 줄이 이어지며, 각 줄에는 과목 이름(처음 CC개 줄에 나온 올바른 문자열)과 그 과목에서 받은 성적(0.0에서 4.0 사이의 부동 소수점 수)이 주어진다. 어떤 학생도 총 200학점을 넘게 수강하지 않는다. 또한 어떤 학생도 같은 과목을 두 번 수강하지 않는다.

출력

각 데이터 세트에 대해 먼저 "Data Set x:"를 한 줄에 단독으로 출력한다. 여기서 x는 데이터 세트의 번호다. 그다음에는 각 학생에 대해 전체 GPA와 해당되는 모든 전공 GPA를 입력 파일에 나열된 전공 순서대로 출력한다. 구체적으로는 먼저 "Student k"를 한 줄에 출력한다. 여기서 k는 학생의 번호다. 그다음에는 학생의 GPA를 한 줄에 출력한다. 이어서 학생이 필수 과목을 모두 수강한 각 전공에 대해, 전공 이름과 그 전공에서의 학생 GPA를 출력한다. (형식은 아래를 참고한다.) 모든 GPA는 소수점 둘째 자리로 반올림한다. 각 데이터 세트 뒤에는 빈 줄을 출력한다.

예제1

  1. 예제 1

    입력
    1
    5 3 1
    CSCI104 4
    CSCI109 2
    EE364 3
    ISE330 4
    ORIG101 1
    CSCI 3
    CSCI104
    CSCI109
    EE364
    CENG 2
    CSCI104
    EE364
    ISE 3
    ISE330
    EE364
    CSCI104
    4
    CSCI104 3.7
    CSCI109 4.0
    EE364 3.3
    ORIG101 4.0
    
    예상 출력
    Data Set 1:
    Student 1
    GPA: 3.67
    CSCI: 3.63
    CENG: 3.53