fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Main
  6. {
  7. public static void main (String[] args) throws java.lang.Exception
  8. {
  9. Scanner in = new Scanner(System.in);
  10. int n = in.nextInt(); long j, sj, bj; // цены прыжка, суперприема и 3-го типа прыжка
  11. int[] platforms = new int [n];
  12. long[] energy = new long[n]; // создаем массивы для платформ и энергии
  13. for (int i = 0; i < n; ++i) platforms[i] = in.nextInt(); //считываем высоты платформ
  14. energy[0] = 0;
  15. for (int i = 1; i < n; ++i) {
  16. // обычный прыжок
  17. j = (platforms[i] - platforms[i-1]) * (platforms[i] - platforms[i-1]);
  18. // 3-й тип прыжка
  19. if (i != n-1) bj = (platforms[i] - platforms[i+1]) * (platforms[i] - platforms[i+1]) +
  20. 3 * (platforms[i+1] - platforms[i-1]) * (platforms[i+1] - platforms[i-1]);
  21. else bj = j;
  22. // суперприём
  23. if (i == 1) sj = Math.max(j, bj);
  24. else sj = 3 * (platforms[i] - platforms[i-2]) * (platforms[i] - platforms[i-2]);
  25. if (i == n-1) bj = Math.max(j, sj);
  26. //количество энергии на i-й платформе
  27. if (i == 1) energy[i] = Math.min(energy[i-1] + bj, energy[i-1] + j);
  28. else energy[i] = Math.min(energy[i-1] + bj, Math.min(energy[i-1] + j, energy[i-2] + sj));
  29. }
  30. System.out.println(energy[n-1]);
  31. }
  32. }
Success #stdin #stdout 0.1s 35480KB
stdin
4
1 2 3 30
stdout
731