제출 #227987

#제출 시각아이디문제언어결과실행 시간메모리
227987VEGAnn고대 책들 (IOI17_books)C++14
50 / 100
318 ms23268 KiB
#include <bits/stdc++.h>
#include "books.h"
#define sz(x) ((int)x.size())
#define all(x) x.begin(),x.end()
#define PB push_back
using namespace std;
typedef long long ll;
vector<array<int, 2> > vc;
ll ans = 0, mn = ll(1e9);
int n;

long long minimum_walk(std::vector<int> p, int s) {
    vc.clear();

    n = sz(p);

    bool was = 0;

    for (int i = 0; i < n; i++){
        ans += abs(p[i] - i);
        if (p[i] != i) {
            was = 1;
            vc.PB({min(p[i], i), max(p[i], i)});
            mn = min(mn, (ll)abs(s - p[i]));
        }
    }

    if (!was)
        return 0;

    if (sz(vc)) {
        sort(all(vc));
        int lst = vc[0][1];

        for (array<int, 2> cr : vc)
            if (cr[0] > lst){
                ans += 2 * (cr[0] - lst);
                lst = cr[1];
            } else lst = max(lst, cr[1]);
    }

	return ans + mn * 2ll;
}
#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...