Submission #1052989

#TimeUsernameProblemLanguageResultExecution timeMemory
1052989abczzAncient Books (IOI17_books)C++17
50 / 100
58 ms15188 KiB
#include "books.h"
#include <iostream>
#define ll long long

using namespace std;

long long minimum_walk(std::vector<int> p, int s) {
	ll n = p.size(), l, r, f = 0, mx = 0;
	for (int i=0; i<n; ++i) {
		f += abs(i-p[i]);
	}
	l = n, r = -1;
	for (int i=0; i<n; ++i) {
		if (p[i] != i) {
			l = i;
			break;
		}
	}
	for (int i=n-1; i>=0; --i) {
		if (p[i] != i) {
			r = i;
			break;
		}
	}
	if (l == n) return 0;
	if (s < l) f += 2*(l-s);
	else if (r < s) f += 2*(s-r);
	for (int i=l; i<=r; ++i) {
		mx = max(mx, (ll)p[i]);
		if (mx == i) f += 2;
	}
	f -= 2;
	return f;
}
#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...