Submission #1048554

#TimeUsernameProblemLanguageResultExecution timeMemory
1048554pccAncient Books (IOI17_books)C++17
50 / 100
78 ms15956 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long
const int mxn = 1e6+10;
int N;
int l[mxn],r[mxn];

long long minimum_walk(std::vector<int> p, int s) {
	ll ans = 0;
	N = p.size();
	for(int i = 0;i<N;i++){
		if(p[i] == i)continue;
		int a = i,b = p[i];
		if(a<b){
			l[a]++;
			l[b]--;
		}
		else{
			r[b]++;
			r[a]--;
		}
	}
	for(int i = 1;i<N;i++){
		l[i] += l[i-1];
		r[i] += r[i-1];
	}
	int lp = s,rp = s-1;
	for(int i = s;i+1<N;i++){
		if(max(l[i],r[i]) != 0)rp = i;
	}
	for(int i = s-1;i>=0;i--){
		if(max(l[i],r[i]) != 0)lp = i;
	}
	for(int i = lp;i<=rp;i++){
		ans += max({l[i],r[i],1})<<1;
	}
	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...