Submission #292741

#TimeUsernameProblemLanguageResultExecution timeMemory
292741SaboonAncient Books (IOI17_books)C++17
0 / 100
1 ms384 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 10;

bool visited[maxn], root[maxn];

long long minimum_walk(vector<int> p, int s){
	int n = p.size();
	set<int> S;
	ll answer = 0;
	for (int i = 0; i < n-1; i++){
        S.insert(p[i]);
        if (!S.empty() and *S.begin() == i)
            S.erase(S.begin());
        answer += 2*S.size();
	}
	int tmp = 0;
	for (int i = 0; i < n; i++){
        if (!visited[i] and p[i] != i){
            tmp = i;
            int x = i;
            while (!visited[x]){
                visited[x] = 1;
                x = p[x];
            }
        }
	}
	answer += 2*tmp;
	return answer;
}
#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...