만드는 중입니다

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

음식 축제

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

요약
요리별 주문 학생 수와 요리사별 조리 시간이 주어질 때, 요리를 요리사에게 나누어 맡기고 조리 순서를 정해 모든 학생의 대기 시간 합을 최소로 구합니다.
난이도

보통10점 중 7점

유형
그래프, 그리디
정답자
아직 제출이 없습니다

문제

도시 CZ는 전국에서 온 학생들을 맞이하려고 큰 음식 축제를 연다. 음식을 좋아하는 작은 M은 새로운 맛을 하나도 놓치고 싶지 않다. 그는 다른 사람의 식탁에 이미 올라간 요리를 기다리는 학생이 없기를 바라며, 학생들의 대기 시간을 최소로 줄이는 조리 순서를 연구한다.

축제에는 nn가지 음식이 있다. 각 학생은 주문할 때 이 중 하나를 고른다. 요리사는 mm명이다. 모든 학생의 주문이 끝나면 요리사마다 조리할 음식의 순서가 배정된다. 그 다음 모든 요리사가 동시에 조리를 시작한다. 각 요리사는 배정된 순서대로 조리하며, 한 번에 한 사람분만 만들 수 있다.

요리사마다 같은 음식을 만드는 데 걸리는 시간이 다르다. 요리사 jj가 음식 ii를 만드는 데 걸리는 시간을 ti,jt_{i,j}라고 한다. 음식은 1번부터 nn번까지, 요리사는 1번부터 mm번까지 번호가 매겨져 있다.

학생의 대기 시간은 모든 요리사가 조리를 시작한 시점부터 그 학생의 음식이 완성될 때까지 걸린 시간이다. 어떤 요리사가 kk번째로 만드는 음식이 학생의 음식이라면, 대기 시간은 그 요리사가 만드는 처음 kk개 음식의 조리 시간을 더한 값이다. 전체 대기 시간은 모든 학생의 대기 시간을 더한 값이다.

음식 ii를 주문한 학생은 정확히 pip_i명이다. 가능한 전체 대기 시간의 최솟값을 구하라.

입력

첫 줄에 양의 정수 nn과 mm이 주어진다.

둘째 줄에 양의 정수 p1,p2,…,pnp_1, p_2, \ldots, p_n이 nn개 주어진다. pip_i는 음식 ii를 주문한 학생 수이다.

이후 nn개의 줄에 각각 0 이상의 정수 mm개가 주어진다. ii번째 줄의 jj번째 정수가 ti,jt_{i,j}이다. 같은 줄의 인접한 수는 공백 하나로 구분되며, 줄 끝에는 공백이 없다.

출력

가능한 전체 대기 시간의 최솟값을 한 줄에 출력한다.

제한

n≤40n \le 40, m≤100m \le 100, p≤800p \le 800, ti,j≤1000t_{i,j} \le 1000. 여기서 p=∑pip = \sum p_i이며, 주문한 전체 학생 수이다.

예제1

  1. 예제 1

    입력
    3 2
    3 1 1
    5 7
    3 6
    8 9
    
    예상 출력
    47