Submission #1082432

#TimeUsernameProblemLanguageResultExecution timeMemory
1082432Valaki2Ancient Books (IOI17_books)C++14
50 / 100
77 ms22776 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long

ll minimum_walk(vector<signed> p, signed s) {
	int n = (int) p.size();
	vector<int> v(1 + n, 0);
	for(int i = 1; i <= n; i++) {
		v[i] = p[i - 1] + 1;
	}
	s++;
	ll ans = 0;
	vector<int> cnt(1 + n, 0);
	for(int i = 1; i <= n; i++) {
		ans += abs(i - v[i]);
		int a = i, b = v[i];
		if(a > b) {
			swap(a, b);
		}
		cnt[a]++;
		cnt[b]--;
	}
	int k = 0;
	for(int i = 1; i <= n; i++) {
		if(v[i] != i) {
			k = i;
		}
	}
	int cur = 0;
	for(int i = 1; i <= n; i++) {
		cur += cnt[i];
		if(i <= k - 1 && cur == 0) {
			ans += 2;
		}
	}
	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...