Submission #155854

#TimeUsernameProblemLanguageResultExecution timeMemory
155854dolphingarlicAncient Books (IOI17_books)C++14
50 / 100
164 ms9484 KiB
#include "books.h"
#include <math.h>
#include <algorithm>

long long minimum_walk(std::vector<int> p, int s) {
    int greatest = 0, n = p.size();

    int l = s, r = s;
    for (int i = s; i < n; i++) if (p[i] < s) r = i, l = std::min(l, p[i]);

    long long dist = std::min(s - l, r - s), ans = 0;
    for (int i = 0; i < n; i++) {
        if (p[i] != i) {
            ans += abs(p[i] - i);
            if (i > greatest) dist += i - greatest;
            greatest = std::max(greatest, p[i]);
        }
    }
    return ans + 2 * dist;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...