Submission #170789

#TimeUsernameProblemLanguageResultExecution timeMemory
170789SortingAncient Books (IOI17_books)C++14
50 / 100
196 ms18936 KiB
#include <bits/stdc++.h>
#include "books.h"

using namespace std;

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

	for(int i = 0; i < n; ++i)
		rev[p[i]] = i;

	int mx = 0;
	for(int i = 0; i < n; ++i){
		if(p[i] != i){
			if(i > mx)
				ans += (i - mx) * 2;
			int v = i;
			do{
				ans += abs(p[v] - v);
				mx= max(mx, v);
				
				int prev = v;
				v = p[v];
				p[prev] = prev;
			}
			while(v != i);
		}
	}

	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...