제출 #301095

#제출 시각아이디문제언어결과실행 시간메모리
301095JPN20고대 책들 (IOI17_books)C++17
0 / 100
1 ms384 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

long long N;
long long cnt[1 << 18];
bool used[1 << 18];

long long minimum_walk(vector<int> p, int s) {
	N = p.size();
	for (int i = 0; i < N; i++) {
		if (used[i] == true || p[i] == i) continue;
		int cx = i;
		int cl = cx, cr = cx;
		while (used[cx] == false) {
			used[cx] = true;
			cl = min(cl, cx);
			cr = max(cr, cx);
			cx = p[cx];
		}
		cnt[cl] += 1;
		cnt[cr] -= 1;
	}
	for (int i = 1; i < N; i++) cnt[i] += cnt[i - 1];
	
	long long sum = 0;
	for (int i = 0; i < N; i++) sum += 2LL * cnt[i];
	for (int i = 1; i < N; i++) {
		if (cnt[i - 1] == 0LL && cnt[i] >= 1LL) sum += 2LL * i;
	}
	return sum;
}
#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...