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

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

공부 계획하기

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

요약
총 공부 시간이 T를 넘지 않도록 N개 과목에 시간을 배분해, 받은 점수 합에서 총 공부 시간에 따른 피로 감소를 뺀 값을 최대로 만드는 시간 배분을 구한다.
난이도

보통10점 중 5점

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

문제

무대소녀 바나나는 고등학교 3학년이 되었다. 명문 대학을 가고 싶은 그녀이지만, 평소 연기 연습만을 하며 내신 공부를 전혀 하지 않았던 바나나는 정신을 차리고 TT시간 뒤에 있는 수능을 위해 공부하기로 마음먹었다. 그러나 공부 경험이 없는 바나나는 공부를 얼마나 해야 하는지를 알 수 없었다. 바나나를 위해 공부 스케줄을 짜주자!

수능에는 NN개의 과목이 있다. ii (1≤i≤N)(1\leq i\leq N)번 과목을 총 jj (0≤j≤T)(0\leq j\leq T)시간 공부했을 때 받을 수 있는 점수를 S_i,jS\_{i,j} 라 하자. 바나나가 지켜오던 스케줄에 따라, 각 과목의 공부 시간은 음이 아닌 정수여야 함에 주의하자.

그러나 인간의 체력에 한계가 있기 때문에 하루 종일 공부를 하는 것은 힘들다. 총 XX (0≤X≤T)(0\leq X\leq T)시간 만큼 공부를 하면 피곤해져서 총 점수가 D_XD\_{X}만큼 감소하게 된다. 이로 인하여 점수가 음수가 될 수도 있음에 주의하자.

당신은 최적의 방법으로 공부를 하였을 때 바나나가 얻을 수 있는 최대 점수와 그때의 공부 방법을 구해야 한다.

입력

첫째 줄에는 수능 과목의 수 NN과 TT가 공백으로 구분되어 주어진다.

둘째 줄부터 N+1N+1번째 줄까지는 i+1i+1 (1≤i≤N)(1\leq i\leq N)번째 줄에 ii번째 과목을 jj (0≤j≤T)(0\leq j\leq T)시간 공부했을 때 받을 수 있는 점수에 대한 T+1T+1개의 수 S_i,0S\_{i,0}, S_i,1S\_{i,1}, ⋯\cdots, S_i,TS\_{i,T}가 공백으로 구분되어 주어진다.

N+2N+2번째 줄에는 T+1T+1개의 수 D_0D\_{0}, D_1D\_{1}, ⋯\cdots, D_TD\_{T}가 공백으로 구분되어 주어진다.

입력으로 주어지는 모든 수는 정수이다.

출력

첫째 줄에 바나나가 받을 수 있는 최대 점수 scorescore를 출력하라.

둘째 줄에 각 과목 별로 공부해야 하는 시간을 뜻하는 NN개의 정수 A_1A\_{1}, A_2A\_{2}, ⋯\cdots, A_NA\_{N}을 공백으로 구분하여 출력하라. 만약 최대 점수를 받는 공부 방법이 여러 가지라면, 그 중 아무거나 출력해도 좋다.

제한

  • 1≤N≤1001\leq N\leq 100
  • 1≤T≤1001\leq T\leq 100
  • 0≤S_i,j≤10,0000\leq S\_{i,j}\leq 10\\,000 (1≤i≤N(1 \leq i \leq N; 0≤j≤T)0 \leq j \leq T)
  • S_i,j≤S_i,j+1S\_{i, j} \leq S\_{i, j + 1} (1≤i≤N(1 \leq i \leq N; 0≤j<T)0 \leq j < T)
  • 0≤D_X≤10,0000\leq D\_X\leq 10\\,000 (0≤X≤T)(0 \leq X \leq T)
  • D_X≤D_X+1D\_X\leq D\_{X+1} (0≤X<T)(0 \leq X < T)
  • 0≤A_1+A_2+⋯+A_N≤T0\leq A\_{1}+A\_{2}+ \cdots +A\_{N}\leq T

예제1

  1. 예제 1

    입력
    3 4
    0 4 7 9 10
    0 5 9 11 12
    0 1 2 4 10
    0 3 6 9 12
    
    예상 출력
    4
    1 2 0