제출 #759477

#제출 시각아이디문제언어결과실행 시간메모리
759477boris_mihov고대 책들 (IOI17_books)C++17
22 / 100
86 ms23776 KiB
#include "books.h" #include <algorithm> #include <iostream> #include <numeric> #include <vector> typedef long long llong; const int MAXN = 100000 + 10; const int INF = 1e9; int n, s; int p[MAXN]; int add[MAXN]; bool vis[MAXN]; llong minimum_walk(std::vector <int> P, int S) { llong ans = 0; n = P.size(); s = S + 1; for (int i = 1 ; i <= n ; ++i) { p[i] = P[i - 1] + 1; ans += abs(i - p[i]); } int max = 0; for (int i = 1 ; i <= n ; ++i) { if (vis[i] || i == p[i]) { continue; } int curr = i; int currMax = i; while (!vis[curr]) { vis[curr] = true; currMax = std::max(currMax, curr); curr = p[curr]; } add[i]++; add[currMax]--; max = std::max(max, currMax); } int balance = 0; for (int i = 1 ; i < max ; ++i) { balance += add[i]; if (balance == 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...