#include <bits/stdc++.h>
using namespace std;
long long minimum_walk(vector<int> p, int s) {
long long ans = 0, N = p.size();
for (int i=0; i<N; i++) ans += abs(p[i]-i);
int last_ordered = N, first_unordered = -1;
for (int i = 0; i < s; i++) {
if (p[i] != i) break;
first_unordered = i;
}
for (int i = N-1; i > s; i--) {
if (p[i] != i) break;
last_ordered = i;
}
if (last_ordered == 0) return 0;
int max_sofar = -1, nseg = 0;
for(int i = first_unordered+1; i < last_ordered; i++) {
if (i > max_sofar) nseg++;
max_sofar = max(max_sofar, p[i]);
}
return ans+(nseg-1)*2;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |