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 * power;
  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 main() {
  18. int k;
  19. cin >> k;
  20.  
  21. int value[20][1 << 19];
  22. int suma_galezi[20][1 << 19];
  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. }
  47.  
Success #stdin #stdout 0.01s 17924KB
stdin
4
1
2 3
4 5 6 7
1 2 3 4 5 6 7 8
stdout
8