fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n; long long j, sj, bj; // цены прыжка, суперприема и 3-го типа прыжка
  6. cin >> n;
  7. int platforms[n]; long long energy[n]; // создаем массивы для платформ и энергии
  8.  
  9. for (int i = 0; i < n; ++i) {
  10. cin >> platforms[i]; //считываем высоты платформ
  11. }
  12. energy[0] = 0;
  13. for (int i = 1; i < n; ++i) {
  14. // обычный прыжок
  15.  
  16. j = (platforms[i] - platforms[i-1]) * (platforms[i] - platforms[i-1]);
  17. // 3-й тип прыжка
  18. bj = (platforms[i] - platforms[i+1]) * (platforms[i] - platforms[i+1]) +
  19. 3 * (platforms[i+1] - platforms[i-1]) * (platforms[i+1] - platforms[i-1]);
  20. // суперприём
  21. if (i == 1) sj = max(j, bj);
  22. else sj = 3 * (platforms[i] - platforms[i-2]) * (platforms[i] - platforms[i-2]);
  23. if (i == n-1) bj = max(j, sj);
  24. //количество энергии на i-й платформе
  25. if(i == 1) energy[i] = min(energy[i-1] + bj, energy[i-1] + j);
  26. else energy[i] = min(energy[i-1] + bj, min(energy[i-1] + j, energy[i-2] + sj));
  27. cout<<energy[i]<<endl;
  28. }
  29. cout << energy[n-1];
  30. }
Success #stdin #stdout 0s 4276KB
stdin
4
1 2 3 30
stdout
1
2
731
731