Submission #1359760

#TimeUsernameProblemLanguageResultExecution timeMemory
1359760retardeAncient Books (IOI17_books)C++20
0 / 100
0 ms344 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

long long cyc(int i, vector<int> &p, vector<int> &done) {
	long long ans = 0, cur = i;
	while (p[cur] != i) {
		done[cur] = 1;
		ans += abs(p[cur] - cur);
		cur = p[cur];
	}
	done[cur] = 1;
	ans += (long long)abs(cur - i);
	return ans;
}

long long minimum_walk(std::vector<int> p, int s) {
	long long tot = 0;
	int n = (int)p.size();
	vector<int> done(n);
	long long cur = -1; long long stp = 0;
	for (int i = 0; i < n; i++) {
		cur++;
		if (done[i]) {continue;}
		tot += cur;
		cur = (long long)0;
		long long c = cyc(i, p, done);
		tot += c;
		stp = i;
	}
	tot += stp;
	return tot;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...