Submission #1053356

#TimeUsernameProblemLanguageResultExecution timeMemory
1053356UnforgettableplAncient Books (IOI17_books)C++17
0 / 100
0 ms348 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

long long minimum_walk(vector<int> p, int s) {
	int n = p.size();
	vector cycle(n,-1);
	int cycle_cnt = 0;
	long long ans = 0;
	for(int i=0;i<n;i++) {
		ans+=abs(p[i]-i);
		if(cycle[i]!=-1)continue;
		int curr = i;
		do {
			cycle[curr]=cycle_cnt;
			curr = p[curr];
		} while(curr!=i);
		cycle_cnt++;
	}
	vector<bool> visited(cycle_cnt);
	int curr = 0;
	for(int i=0;i<n;i++) {
		if(visited[cycle[i]])continue;
		visited[cycle[i]]=true;
		if(++curr==cycle_cnt)return ans+2ll*i;
	}
	assert(false);
}
#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...