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. j = (platforms[i] - platforms[i-1]) * (platforms[i] - platforms[i-1]);
  16. // 3-й тип прыжка
  17. bj = (platforms[i] - platforms[i+1]) * (platforms[i] - platforms[i+1]) +
  18. 3 * (platforms[i+1] - platforms[i-1]) * (platforms[i+1] - platforms[i-1]);
  19. // суперприём
  20. if (i == 1) sj = max(j, bj);
  21. else sj = 3 * (platforms[i] - platforms[i-2]) * (platforms[i] - platforms[i-2]);
  22. if (i == n-1) bj = max(j, sj);
  23. //количество энергии на i-й платформе
  24. energy[i] = min(energy[i-1] + bj, min(energy[i-1] + j, energy[i-2] + sj));
  25. }
  26. cout << energy[n-1];
  27. }
Success #stdin #stdout 0s 4528KB
stdin
4
1 2 3 30
stdout
731