Advertisement
Guest User

pt cristi

a guest
Feb 25th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. ifstream fin("summax.in");
  7. ofstream fout("summax.out");
  8.  
  9. int triunghi[2005][2005], aux[2005][2005];
  10. int v, n, st, dr;
  11. int nr_drumuri;
  12. int drumuri[2005][2005];
  13. int k;
  14.  
  15. void drum(int i, int j)
  16. {
  17. if(i == 1){
  18. drumuri[nr_drumuri][k] = j;
  19. k = 1;
  20. nr_drumuri++;
  21. }
  22.  
  23. if(aux[i][j] - triunghi[i][j] == aux[i-1][j-1]){
  24. drumuri[nr_drumuri][k] = j;
  25. k++;
  26. drum(i-1, j-1);
  27. }
  28. if(aux[i][j] - triunghi[i][j] == aux[i-1][j]){
  29. drumuri[nr_drumuri][k] = j;
  30. k++;
  31. drum(i-1, j);
  32. }
  33.  
  34. }
  35.  
  36. int main()
  37. {
  38. fin >> v >> n >> st >> dr;
  39. for(int i = 1; i <= n; i++)
  40. for(int j = 1; j <= i; j++)
  41. fin >> triunghi[i][j];
  42.  
  43.  
  44. aux[1][1] = triunghi[1][1];
  45. for(int i = 2; i <= n; i++)
  46. for(int j = 1; j <= i; j++)
  47. aux[i][j] = max(aux[i-1][j] + triunghi[i][j], aux[i-1][j-1] + triunghi[i][j]);
  48.  
  49. int smax = 0;
  50. for(int i = 1; i <= n; i++)
  51. if(aux[n][i] > smax)
  52. smax = aux[n][i];
  53.  
  54. for(int i = 1; i <= n; i++)
  55. if(aux[n][i] == smax){
  56. k = 1;
  57. drum(n, i);
  58. }
  59.  
  60.  
  61. cout << nr_drumuri << "\n";
  62.  
  63. for(int i = 0; i < nr_drumuri; i++){
  64. for(int j = n; j >= 1; j--)
  65. cout << drumuri[i][j] << " ";
  66. cout << "\n";
  67. }
  68.  
  69. return 0;
  70.  
  71. for(int i = 1; i <= n; i++){
  72. for(int j = 1; j <= i; j++)
  73. cout << aux[i][j] << " ";
  74. cout << "\n";
  75. }
  76.  
  77.  
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement