시험 공부 시간 배분
면접 대비시간 제한1초메모리 제한256 MB
제한된 공부 시간을 과목별 등급 요구 시간에 맞게 나누어 평균 학점을 최대화합니다.
- 난이도
보통10점 중 4점
- 유형
- 동적 계획법
- 정답자
- 아직 제출이 없습니다
문제
시험 전에 쓸 수 있는 공부 시간은 시간으로 정해져 있다. 평점을 최대로 올리려면 이 시간을 과목마다 얼마씩 나눠 쓸지 정해야 한다. 한 과목에서 A를 받는 데 드는 시간이 아주 크고 나머지 과목은 조금만 공부해도 A가 나온다면, 그 한 과목을 C로 두고 나머지에서 A를 챙기는 쪽이 평점에 유리하다.
과목마다 학점별로 필요한 공부 시간이 주어진다. 어떤 과목에 그 학점이 요구하는 시간 이상을 쓰면 그 학점을 받는다. D에 필요한 시간조차 채우지 못하면 F를 받는다. 학점의 점수는 A가 4.0, A-가 3.7, B+가 3.3, B가 3.0, B-가 2.7, C+가 2.3, C가 2.0, C-가 1.7, D+가 1.3, D가 1.0, F가 0.0이다. 평점은 개 과목에서 받은 점수의 평균이다.
시간을 과목에 나눠 배정해서 얻을 수 있는 평점의 최댓값을 구하라. 한 과목에 배정한 시간은 다른 과목에 쓸 수 없고, 시간이 남아도 된다.
입력
첫 줄에 데이터 집합의 개수 가 주어진다. ()
각 데이터 집합의 첫 줄에는 수강 과목 수 과 공부에 쓸 수 있는 시간 가 공백으로 구분되어 주어진다. (, )
이어지는 개 줄에는 각각 정수 10개가 주어진다. 번째 줄의 정수는 순서대로 번 과목에서 A, A-, B+, B, B-, C+, C, C-, D+, D를 받는 데 필요한 공부 시간이다. 한 줄에 있는 정수 10개는 비증가 순서이고, 모두 0 이상 100 이하이다.
출력
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. 는 데이터 집합의 번호이고 1부터 시작한다. 그다음 줄에 얻을 수 있는 평점의 최댓값을 소수점 아래 둘째 자리까지 출력한다.
평점은 소수점 아래 셋째 자리에서 반올림한다. 버리는 부분이 정확히 이면 큰 쪽으로 올린다. 자릿수가 모자라면 0을 채워 소수점 아래를 항상 두 자리로 쓴다.
각 데이터 집합의 출력 뒤에 빈 줄을 하나 출력한다.