http://www.code-fans.cn/p/sn1102/submit
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=30,M=1e4+10;
int n,m,d;
int w[N][N],c[N][N],dp[N][M],gys[N][M];
string l[N][N]={{""}};
int main(){
//freopen("machine.in","r",stdin);
//freopen("machine.out","w",stdout);
cin>>n>>m>>d;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>w[i][j];
}
}
memset(dp,0x3f3f3f,sizeof(dp));
dp[0][0]=0;
for(int i=1;i<=n;i++){
for(int j=d;j>=0;j--){
for(int k=1;k<=m;k++){
if(j>=c[i][k]&&dp[i-1][j-c[i][k]]+w[i][k]<dp[i][j]){
dp[i][j]=dp[i-1][j-c[i][k]]+w[i][k];
l[i][j]=l[i-1][j-c[i][k]]+to_string(k)+' ';
}
}
}
}
int mn=0x3f3f3f,best_d=0;
for(int i=0;i<=d;i++){
if(dp[n][i]<mn){
mn=dp[n][i];
best_d=i;
}
}
cout<<mn<<"\n"<<l[n][best_d];
return 0;
}