포페알라

T개의 가중치 있는 테스트 케이스를 정확히 K개의 연속된 부분과제로 나눌 때 얻는 최소 총점을 K가 1부터 S일 때까지 각각 구한다.

어려움8동적 계획법누적 합분할 정복아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

루마니아어 낱말 popeală는 역사 소설 "Alexandru Lăpușneanul"에서 왔다. 이 낱말은 최근 루마니아 프로그래밍 대회에서 다시 쓰이기 시작했고, 채점 위원회가 별난 방식으로, 대개는 의도치 않게 참가자를 힘들게 만드는 상황을 가리킨다. 지나치게 빡빡한 시간 제한, 망가진 테스트 데이터, 잘못 쓴 문제 설명, 키보드 빼앗기 같은 것이 여기에 해당한다. 이 문제도 그런 상황을 다룬다.

참가자가 NN명인 대회가 있다. 문제는 하나뿐이고, 그 문제의 테스트 케이스는 TT개다. 위원회는 이 테스트 케이스를 서브태스크로 묶으려고 한다.

서브태스크 규칙은 다음과 같다. 각 테스트 케이스는 정확히 하나의 서브태스크에 속한다. 서브태스크 하나에 들어가는 테스트 케이스의 개수에는 제한이 없지만, 빈 서브태스크는 만들 수 없다. 어떤 참가자가 한 서브태스크의 테스트 케이스 중 하나라도 틀리면 그 참가자가 그 서브태스크에서 받는 점수는 00이다. 하나도 틀리지 않으면 그 서브태스크에 속한 테스트 케이스의 배점을 모두 더한 점수를 받는다.

위원회는 대회가 끝난 뒤에 이 묶기를 한다. 누가 어떤 테스트 케이스를 맞혔는지 이미 알고 있으므로, 대회 전체에서 참가자들이 받는 점수의 합이 최소가 되도록 묶을 생각이다.

길이가 TT인 배열 Points\mathrm{Points}가 주어진다. Points[i]\mathrm{Points}[i]ii번째 테스트 케이스의 배점이다. 크기가 N×TN \times T인 행렬 Results\mathrm{Results}도 주어진다. ii번째 참가자가 jj번째 테스트 케이스를 맞혔으면 Results[i][j]\mathrm{Results}[i][j]11, 아니면 00이다. 위원회는 서브태스크마다 번호가 연속인 테스트 케이스만 담기로 이미 정했다. 즉 테스트 케이스 XXYY가 같은 서브태스크에 있으면, XZYX \le Z \le Y인 모든 테스트 케이스 ZZ도 같은 서브태스크에 있다.

1KS1 \le K \le S인 각 KK에 대해, 테스트 케이스를 정확히 KK개의 서브태스크로 묶을 때 대회 전체 점수 합의 최솟값을 구하라.

입력

첫째 줄에 세 정수 NN, TT, SS가 공백으로 구분되어 주어진다.

둘째 줄에 TT개의 정수가 공백으로 구분되어 주어진다. ii번째 수가 Points[i]\mathrm{Points}[i]다.

다음 NN개의 줄에 0011로 이루어진 길이 TT의 문자열이 한 줄에 하나씩 주어진다. ii번째 줄의 jj번째 문자가 Results[i][j]\mathrm{Results}[i][j]다.

  • 1T200001 \le T \le 20000
  • 1N501 \le N \le 50
  • 1Smin(50,T)1 \le S \le \min(50, T)
  • 1Points[i]100001 \le \mathrm{Points}[i] \le 10000 (1iT1 \le i \le T)
  • (Points[1]+Points[2]++Points[T])×N2×109(\mathrm{Points}[1] + \mathrm{Points}[2] + \dots + \mathrm{Points}[T]) \times N \le 2 \times 10^9

출력

SS개의 줄을 출력한다. ii번째 줄에는 테스트 케이스를 정확히 ii개의 서브태스크로 묶을 때 대회 전체에서 나올 수 있는 점수 합의 최솟값을 출력한다.

힌트

첫 번째 예제에서는 참가자가 22명, 테스트 케이스가 33개, S=3S = 3이다. 따라서 서브태스크가 11개, 22개, 33개일 때의 최솟값을 차례로 구해야 한다. 배점은 44, 33, 55다.

서브태스크가 하나면 테스트 케이스 세 개가 모두 같은 서브태스크에 들어간다. 두 참가자 모두 하나씩 틀렸으므로 점수 합은 00이다.

서브태스크가 둘이면 묶는 방법이 두 가지다. 한쪽은 점수 합이 1212, 다른 쪽은 88이므로 작은 쪽인 88을 고른다.

서브태스크가 셋이면 묶는 방법이 하나뿐이고, 이때 점수 합은 1616이다.