Submission #1267985

#TimeUsernameProblemLanguageResultExecution timeMemory
1267985LaMatematica14Ancient Books (IOI17_books)C++20
50 / 100
62 ms8168 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...