#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int grid[80][80];
int n;
char ch;
ifstream fin("p081_matrix.txt");
for(int i=0;i<80;i++)
{
for(int j=0;j<80;j++)
{
fin>>n;
grid[i][j] = n;
fin>>ch;
}
}
int gridSize=80;
//calculate the solution for bottom and right
for (int i = gridSize - 2; i >= 0; i--) {
grid[gridSize - 1][ i] += grid[gridSize - 1 ][i+1];
grid[i][gridSize - 1] += grid[i+1 ][gridSize - 1];
}
for (int i = gridSize - 2; i >= 0; i--) {
for (int j = gridSize - 2; j >= 0; j--) {
grid[i ][j] += min(grid[i + 1 ][j], grid[i ][j + 1]);
}
}
cout<<grid[0][0];
fin.close();
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGZzdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CglpbnQgZ3JpZFs4MF1bODBdOwoJaW50IG47CgljaGFyIGNoOwoKCWlmc3RyZWFtIGZpbigicDA4MV9tYXRyaXgudHh0Iik7CgoJZm9yKGludCBpPTA7aTw4MDtpKyspCgl7CgkJZm9yKGludCBqPTA7ajw4MDtqKyspCgkJewoJCQlmaW4+Pm47CgkJCWdyaWRbaV1bal0gPSBuOwoJCQlmaW4+PmNoOwoKCQl9Cgl9CgogCWludCBncmlkU2l6ZT04MDsKCgkvL2NhbGN1bGF0ZSB0aGUgc29sdXRpb24gZm9yIGJvdHRvbSBhbmQgcmlnaHQKCWZvciAoaW50IGkgPSBncmlkU2l6ZSAtIDI7IGkgPj0gMDsgaS0tKSB7CgkgICAgZ3JpZFtncmlkU2l6ZSAtIDFdWyBpXSArPSBncmlkW2dyaWRTaXplIC0gMSBdW2krMV07CgkgICAgZ3JpZFtpXVtncmlkU2l6ZSAtIDFdICs9IGdyaWRbaSsxIF1bZ3JpZFNpemUgLSAxXTsKCX0KIAoJZm9yIChpbnQgaSA9IGdyaWRTaXplIC0gMjsgaSA+PSAwOyBpLS0pIHsKICAgIAlmb3IgKGludCBqID0gZ3JpZFNpemUgLSAyOyBqID49IDA7IGotLSkgewogICAgICAgIAlncmlkW2kgXVtqXSArPSBtaW4oZ3JpZFtpICsgMSBdW2pdLCBncmlkW2kgXVtqICsgMV0pOwogICAgCX0KCX0KCgljb3V0PDxncmlkWzBdWzBdOwoKCWZpbi5jbG9zZSgpOwp9