Submission #289255

#TimeUsernameProblemLanguageResultExecution timeMemory
289255eohomegrownappsAncient Books (IOI17_books)C++14
0 / 100
1 ms384 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int ptr = 0;
vector<int> cycle;
vector<int> p;
int n;

ll total = 0;

void findcycle(int i){
	total += abs(i-p[i]);
	cycle[i] = ptr;
	if (cycle[p[i]]!=-1){return;}
	findcycle(p[i]);
}

ll minimum_walk(std::vector<int> px, int s) {
	p = px;
	n = p.size();
	cycle.resize(n,-1);
	int minind = 0;
	ll tot = 0;
	for (int i = 0; i<n; i++){
		if (cycle[i]!=-1){continue;}
		total = 0;
		findcycle(i);
		if (total!=0){
			minind=i;
		}
		tot += total;
		ptr++;
	}
	//cout<<tot<<' '<<minind<<'\n';
	return tot+2*minind;
}
#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...