Submission #405297

#TimeUsernameProblemLanguageResultExecution timeMemory
405297dxz05Ancient Books (IOI17_books)C++14
0 / 100
1 ms292 KiB
#include "books.h"
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 5e5 + 3e2;
typedef long long ll;

long long ans = 0;
int last = 0;
void go(int x){
    ans += abs(last - x);
    last = x;
    //cout << x << ' ';
}

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

    while (true){
        int idx = -1;
        for (int i = 0; i < n; i++){
            if (p[i] == i) continue;
            if (idx == -1 || abs(last - idx) > abs(last - i)) idx = i;
        }

        if (idx == -1) break;

        go(idx);
        while (idx != p[idx]){
            int x = p[idx];
            go(x);
            p[idx] = idx;
            idx = x;
        }
    }

    go(0);

	return ans;
}
#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...