제출 #155854

#제출 시각아이디문제언어결과실행 시간메모리
155854dolphingarlic고대 책들 (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;
}
#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...