Submission #806871

#TimeUsernameProblemLanguageResultExecution timeMemory
806871k1r1t0Ancient Books (IOI17_books)C++17
0 / 100
1 ms308 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define N 1100000 int n, type[N]; ll minimum_walk(vector<int> p, int s) { n = p.size(); ll ans = 0; for (int i = 0; i < n; i++) ans += abs(i - p[i]); fill(type, type + n, -1); int cycles = 0; for (int i = 0; i < n; i++) { if (type[i] != -1 || i == p[i]) continue; int cur = i; do { type[cur] = cycles; cur = p[cur]; } while (cur != i); cycles++; } if (cycles == 0) return 0; int closest = n; for (int i = 0; i < n; i++) if (type[i] != -1) closest = min(closest, abs(i - s)); return ans + 2 * (cycles - 1 + closest); }
#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...