fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int two_to(int a){
  5. int power = 1;
  6. for (int i = 0; i < a; i++){
  7. power *= 2;
  8. }
  9. return power;
  10. }
  11.  
  12. int min(int a, int b){
  13. if (a < b) return a;
  14. return b;
  15. }
  16.  
  17. int value[20][1 << 19];
  18. int suma_galezi[20][1 << 19];
  19.  
  20. int main() {
  21. int k;
  22. cin >> k;
  23.  
  24. for (int i = 0; i < k; i++){
  25. for (int j = 0; j < two_to(i); j++){
  26. cin >> value[i][j];
  27. }
  28. }
  29.  
  30. for (int j = 0; j < two_to(k-1); j++){
  31. suma_galezi[k-1][j] = value[k-1][j];
  32. }
  33.  
  34. for (int i = k - 2; i >= 0; i--){
  35. for (int j = 0; j < two_to(i); j++){
  36. suma_galezi[i][j] = value[i][j] + min(
  37. suma_galezi[i+1][2*j],
  38. suma_galezi[i+1][2*j + 1]
  39. );
  40. }
  41. }
  42.  
  43. cout << suma_galezi[0][0] << "\n";
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0.01s 13776KB
stdin
3
1 2
3 4 5 6
6 7 8 9 8 7 6 5
stdout
7