만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

공부 계획하기

면접 대비

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

요약
N개 과목에 총 T시간 이하로 공부 시간을 나눠 배정하고, 과목 점수 합에서 총 공부 시간에 따른 피로 감점을 뺀 값을 최대로 만드는 문제입니다.
난이도

보통10점 중 5점

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

문제

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

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

그러나 사람의 체력에는 한계가 있어 하루 종일 공부하는 것은 힘들다. 총 XX (0≤X≤T)(0\leq X\leq T)시간 동안 공부하면 피곤해져서 총 점수가 DXD_X만큼 감소한다. 점수가 음수가 될 수도 있다.

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

입력

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

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

N+2N+2번째 줄에는 T+1T+1개의 수 D0,D1,⋯ ,DTD_0, D_1, \cdots, D_T가 공백으로 구분되어 주어진다.

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

출력

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

둘째 줄에 각 과목별로 공부해야 하는 시간 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N을 공백으로 구분하여 출력한다. 최대 점수를 받는 공부 방법이 여러 가지라면, 그중 아무거나 출력해도 된다.

제한

  • 1≤N≤1001\leq N\leq 100
  • 1≤T≤1001\leq T\leq 100
  • 0≤Si,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)
  • Si,j≤Si,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≤DX≤10 0000\leq D_X\leq 10\,000 (0≤X≤T)(0 \leq X \leq T)
  • DX≤DX+1D_X\leq D_{X+1} (0≤X<T)(0 \leq X < T)
  • 0≤A1+A2+⋯+AN≤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