```cpp
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
int n,m;
int v[105][105],f[105][105];
int cuse[105];
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i++) for(int j = 1;j <= m;j++) scanf("%d",&v[i][j]);
for(int i = 1;i <= n;i++){
int flag = 0;
for(int j = 1;j <= m;j++){
f[i][j] = max(f[i - 1][j],f[i][j - 1]);
f[i][j] = max(f[i][j],f[i - 1][j - 1] + v[i][j]);
if(f[i][j] > flag){
cuse[i] = j;
flag = f[i][j];
}
}
}
printf("%d\n",f[n][m]);
for(int i = 2;i <= n;i++){
int flag = 0;
for(int j = 1;j <= m;j++){
if(f[i - 1][j] > f[i - 1][flag]) flag = j - 1;
}
printf("%d ",min(cuse[i],flag));
}
printf("%d ",cuse[n]);
return 0;
}
```
hhh
同楼主
by Firrel @ 2024-03-29 14:56:23
qp
by sheep32768 @ 2024-03-30 12:34:03