40%数据:n<=20 , m<=1000
60%数据:n<=60 , m<=1050
代码:
#include<cstdio>
#include<algorithm>
using namespace std;
bool d;
int b[101][101],c[101][101],n,tot;
int main(){
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
scanf("%d",&b[i][j]);
c[i][j]=b[i][j];
}
}
for(i=n-1;i>=1;i--)
for(j=1;j<=i;j++)
b[i][j]+=max(b[i+1][j],b[i+1][j+1]);
printf("%d\n%d-",b[1][1],c[1][1]);
j=1;
for(int i=2;i<=n;i++){
if(b[i][j]>=b[i][j+1])
printf("%d",c[i][j]);
else{
printf("%d",c[i][j+1]);
j++;
}
if(i!=n)
printf("-");
}
return 0;
}