Submission #637521

#TimeUsernameProblemLanguageResultExecution timeMemory
637521boris_mihovAncient Books (IOI17_books)C++17
0 / 100
2058 ms340 KiB
#include "books.h" #include <algorithm> #include <iostream> #include <numeric> #include <vector> typedef long long llong; const int MAXN = 1000000 + 10; const int INF = 1e9; int a[MAXN]; int b[MAXN]; int res[MAXN]; int perm[MAXN], n, s; llong check() { for (int i = 1 ; i <= n ; ++i) { b[i] = a[i]; } perm[n + 1] = s; llong ans = 0; for (int i = 1 ; i <= n ; ++i) { std::swap(a[perm[i]], a[perm[i + 1]]); ans += abs(perm[i] - perm[i + 1]); } bool sorted = true; for (int i = 1 ; i <= n ; ++i) { if (a[i] != i) sorted = false; a[i] = b[i]; } if (!sorted) return INF; return ans; } llong minimum_walk(std::vector <int> P, int S) { n = P.size(); s = S + 1; for (int i = 1 ; i <= n ; ++i) { a[i] = P[i-1] + 1; } std::iota(perm + 1, perm + 1 + n, 1); llong ans = INF; do { ans = std::min(ans, check()); } while(std::next_permutation(perm + 1, perm + 1 + n)); 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...