<Problem>
http://ntucoder.net/Problem/Details/4442
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int c[200][200] = { 0 };
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> c[i][j];
}
}
int f[200][200] = { 0 };
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
for (int k = 0; k <= j; k++) {
f[i][j] = max(f[i][j], f[i - 1][j - k] + c[i][k]);
}
}
}
cout << f[n][m] << endl;
int i = n;
int j = m;
int result[200] = { 0 };
while (i >= 1) {
while (f[i][j] == f[i - 1][j] && i >= 1) {
result[i] = 0;
i--;
}
for (int k = 0; k <= j; k++) {
if (f[i - 1][k] + c[i][j - k] == f[i][j]) {
result[i] = j - k;
j = k;
break;
}
}
i--;
}
//cout << "ENTER" << endl;
for (int i = 1; i <= n; i++) {
cout << result[i] << endl;
}
return 0;
}