Submission #778254

#TimeUsernameProblemLanguageResultExecution timeMemory
778254ggohAncient Books (IOI17_books)C++14
50 / 100
109 ms18768 KiB
#include "books.h"
#include<bits/stdc++.h>
using namespace std;
#define sz(v) ((int)(v).size())
typedef long long lint;
typedef pair<int,int> pii;

lint minimum_walk(vector<int> p, int s) {
	int n=sz(p);
	lint ans=0;
	vector<int>v(n);
	int m=0,step=0,end=0;
	for(int i=0;i<n;i++)
	{
		if(!v[i])
		{
			int x=i;
			m=i;
			while(1)
			{
				v[x]=1;
				ans+=abs(p[x]-x);
				m=max(m,p[x]);
				if(p[x]==i)break;
				x=p[x];
			}
			if(m!=i)
			{
				if(end<i)step+=(i-end);
				if(end<m)end=m;
			}
		}
	}
	ans+=2*step;
	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...