Submission #116322

#TimeUsernameProblemLanguageResultExecution timeMemory
116322user202729고대 책들 (IOI17_books)C++17
0 / 100
2 ms512 KiB
#include "books.h"
#include<vector>
#include<cstdlib>
#include<climits>

long long minimum_walk(std::vector<int> p, int s) {
	if(s!=0)return -1;
	std::vector<char> vs(p.size());
	int max_cr=0;
	long long sbookmove=0;
	for(int i=p.size();i--;){
		sbookmove+=std::abs(i-p[i]);

		if(vs[i])continue;
		int cr=INT_MAX; // closest to the right of s
		for(int j=i;;){
			vs[j]=true;
			cr=std::min(cr,j);

			j=p[j];
			if(j==i)break;
		}
		if(p[i]!=i)
			max_cr=std::max(max_cr,cr);
	}
	return sbookmove+2*max_cr;
}
#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...