제출 #156409

#제출 시각아이디문제언어결과실행 시간메모리
156409dolphingarlicAncient Books (IOI17_books)C++14
0 / 100
2 ms376 KiB
#include "books.h"
#include <math.h>
#include <algorithm>

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

    int greatest = s, l = s, r = s;
    for (int i = s; ~i; i--) {
        if (p[i] != i) {
            ans += abs(p[i] - i);
            if (p[i] > s) {
                l = std::min(l, i);
                r = std::max(r, p[i]);
            }
            if (i < greatest) dist += i - greatest;
            greatest = std::min(greatest, std::min(i, p[i]));
        }
    }
    greatest = s;
    for (int i = s + 1; i < n; i++) {
        if (p[i] != i) {
            ans += abs(p[i] - i);
            if (p[i] < s) {
                l = std::min(l, p[i]);
                r = std::max(r, p[i]);
            }
            if (i > greatest) dist += i - greatest;
            greatest = std::max(greatest, std::max(i, p[i]));
        }
    }
    return ans + 2 * dist + std::min(s - l, r - s);
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…