fork download
  1. #include <stdio.h>
  2. long long h, cek[1001][1001], a[1001][1001], temp[1001][1001];
  3. long long minimum(int x, int y);
  4. void cetak();
  5. int main()
  6. {
  7. scanf("%lld", &h);
  8. for (int i = 1; i <= h; i++)
  9. {
  10. for (int j = 1; j <= i; j++)
  11. {
  12. scanf("%lld", &a[i][j]);
  13. temp[i][j] = 0;
  14. }
  15. }
  16. minimum(1, 1);
  17. cetak();
  18. }
  19. long long minimum(int x, int y)
  20. {
  21. if (temp[x][y] != 0)
  22. {
  23. return temp[x][y];
  24. }
  25. if (x == h)
  26. {
  27. return temp[x][y] = a[x][y];
  28. }
  29. if (minimum(x + 1, y) < minimum(x + 1, y + 1))
  30. {
  31. temp[x][y] = a[x][y] + minimum(x + 1, y);
  32. cek[x][y] = 1;
  33. }
  34. else
  35. {
  36. temp[x][y] = a[x][y] + minimum(x + 1, y + 1);
  37. cek[x][y] = 0;
  38. }
  39. return temp[x][y];
  40. }
  41. void cetak()
  42. {
  43. a[1][1] = -1;
  44. int j = 1;
  45. for (int i = 1; i < h; i++)
  46. {
  47. if (cek[i][j])
  48. {
  49. a[i + 1][j] = -1;
  50. }
  51. else
  52. {
  53. a[i + 1][++j] = -1;
  54. }
  55. }
  56. for (int i = 1; i <= h; i++)
  57. {
  58. for (int j = 1; j <= i; j++)
  59. {
  60. printf("%lld ", a[i][j]);
  61. }
  62. printf("\n");
  63. }
  64. }
Success #stdin #stdout 0.01s 5696KB
stdin
4
3
7 4
2 4 6
8 5 9 4
stdout
-1 
7 -1 
2 -1 6 
8 -1 9 4