Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- int main() {
- int n, i;
- scanf("%d", &n);
- long long int engy[n];
- int platf[n], from[i], ans[n], k = 1;
- engy[0] = 0;
- for (i = 0; i < n; i++) {
- scanf("%d", &platf[i]);
- }
- engy[0] = 0;
- from[1] = 0;
- engy[1] = abs(platf[1] - platf[0]);
- for (i = 2; i < n; i++) {
- if ((engy[i - 1] + abs(platf[i] - platf[i - 1])) > (engy[i - 2] + 3 * abs(platf[i] - platf[i - 2]))) {
- engy[i] = engy[i - 2] + 3 * abs(platf[i] - platf[i - 2]);
- from[i] = i - 2;
- } else {
- engy[i] = engy[i - 1] + abs(platf[i] - platf[i - 1]);
- from[i] = i - 1;
- }
- }
- printf("%d\n", engy[n - 1]);
- i = n - 1;
- ans[0] = n;
- while (i != 0) {
- ans[k] = from[i] + 1;
- k++;
- i = from[i];
- }
- printf("%d\n", k);
- for (i = k - 1; i >= 0; i--) {
- printf("%d ", ans[i]);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment