Submission #390526

#TimeUsernameProblemLanguageResultExecution timeMemory
390526alireza_kavianiAncient Books (IOI17_books)C++11
50 / 100
161 ms15940 KiB
#include <bits/stdc++.h>
#include "books.h"
using namespace std;

typedef long long ll;

const int MAXN = 1e6 + 10;

int n;
ll ans , ps[MAXN];

ll minimum_walk(vector<int> p, int s) {
	n = p.size();
	for(int i = 0 ; i < n ; i++){
		ps[min(p[i] , i)]++;
		ps[max(p[i] , i)]--;
	}
	partial_sum(ps , ps + MAXN , ps);
	int l = 0 , r = n;
	while(l < s && ps[l] == 0)	l++;
	while(s <= r && ps[r] == 0)	r--;
	int res = s;
	for(int i = 0 ; i < n ; i++){
		if(ps[i] == 0)	res = min(res , abs(i - s) - (i < s));
	}
	for(int i = l ; i <= r ; i++){
		ans += max(2ll , ps[i]);
	}
	return ans + res * 2;
}
#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...