fork download
  1. #include<iostream>
  2. #include<fstream>
  3.  
  4. using namespace std;
  5.  
  6. #define max 1000000000000000000
  7.  
  8. int main()
  9. {
  10. long long int A[82][82],n;
  11. char ch;
  12.  
  13. for(int i=0;i<82;i++)
  14. {
  15. A[i][0] = max;
  16. A[0][i] = max;
  17. A[i][81] = max;
  18. A[81][i] = max;
  19. }
  20.  
  21. ifstream fin("p081_matrix.txt");
  22.  
  23. for(int i=1;i<=80;i++)
  24. {
  25. for(int j=1;j<=80;j++)
  26. {
  27. fin>>n;
  28. A[i][j] = n;
  29. fin>>ch;
  30.  
  31. }
  32. }
  33. /*
  34. for(int i=1;i<=80;i++)
  35. {
  36. for(int j=1;j<=80;j++)
  37. {
  38. cout<<A[i][j]<<" ";
  39. }
  40. cout<<endl;
  41. }
  42. */
  43. for(int i=3;i<=81;i++)
  44. {
  45. for(int j=1;j<i;j++)
  46. {
  47. A [j] [i-j] += min( A [j-1] [i-j] , A [j] [i-j-1] );
  48. // cout<<"Adding minumum of ("<<j-1<<","<<i-j<<") and ("<<j<<","<<i-j-1<<") to ("<<j<<","<<i-j<<")\n";
  49. A [80-j+1] [80-i+j+1] += min( A [80-j+2] [80-i+j+1] , A [80-j+1] [80-i+j+2] );
  50. // cout<<"Adding minumum of ("<<80-j+2<<","<<80-i+j+1<<") and ("<<80-j+1<<","<<80-i+j+2<<") to ("<<80-j+1<<","<<80-i+j+1<<")\n";
  51. }
  52. }
  53.  
  54. long long int m = max;
  55.  
  56. for(int i=1;i<=80;i++)
  57. {
  58. if(A[i][80-i+1] < m)
  59. m=A[i][80-i+1];
  60. }
  61.  
  62. cout<<m;
  63.  
  64. fin.close();
  65. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
Standard output is empty