Advertisement
Guest User

sumtri1

a guest
Jan 29th, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("sumtri1.in");
  6. ofstream fout("sumtri1.out");
  7.  
  8. const int NMAX = 105;
  9.  
  10. int n;
  11. vector < vector < int > > G(NMAX, vector < int >(NMAX));
  12. vector < vector < int > > G2(NMAX, vector < int >(NMAX));
  13. vector < int > sol(NMAX);
  14.  
  15. void Read()
  16. {
  17. fin >> n;
  18. int i, j, x;
  19. for(i = 1; i <= n; ++i)
  20. for(j = 1; j <= i; ++j)
  21. {
  22. fin >> G[i][j];
  23. G2[i][j] = G[i][j];
  24. }
  25. }
  26.  
  27. void DP()
  28. {
  29. int i, j;
  30. for(i = 2; i <= n; ++i)
  31. for(j = 1; j <= i; ++j)
  32. {
  33. if(j == 1)
  34. G2[i][j] += G2[i-1][j];
  35. else if(j == i)
  36. G2[i][j] += G2[i-1][j-1];
  37. else
  38. G2[i][j] += min(G2[i-1][j-1], G2[i-1][j]);
  39. }
  40.  
  41. }
  42.  
  43. int main()
  44. {
  45. Read();
  46. DP();
  47. int minn = INT_MAX, i = 1, min_index;
  48. for(; i <= n; ++i)
  49. if(G2[n][i] < minn)
  50. {
  51. minn = G2[n][i];
  52. min_index = i;
  53. }
  54. fout << minn << endl;
  55. i = 1;
  56. int j = min_index;
  57. sol[i] = G[n][j];
  58. for(i = 2; i <= n; ++i)
  59. {
  60. if(G2[n-i+1][j] > G2[n-i+1][j-1])
  61. --j;
  62. if(n-i+1 == j-1)
  63. --j;
  64. sol[i] = G[n-i+1][j];
  65. }
  66.  
  67. i = n;
  68. for(; i >= 1; --i)
  69. fout << sol[i] <<" ";
  70.  
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement