Submission #598190

#TimeUsernameProblemLanguageResultExecution timeMemory
598190yanndevAncient Books (IOI17_books)C++17
0 / 100
2090 ms340 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; ll minimum_walk(vector<int> p, int s) { ll ans = 1e9; int n = (int)p.size(); vector<vector<int>> cycles {}; vector<bool> vis (n, false); int last = 0; for (int i = 0; i < n; i++) { if (vis[i]) continue; //ans += abs(i - last); int pos = i; last = i; cycles.push_back({}); while (!vis[pos]) { vis[pos] = true; cycles.back().push_back(pos); //ans += abs(p[pos] - pos); pos = p[pos]; } } //ans += last; vector<int> perm {}; for (int i = 0; i < (int)cycles.size(); i++) perm.push_back(i); do { ll sub = 0; int lst = 0; for (int i = 0; i < (int)cycles.size(); i++) { for (auto& x: cycles[i]) { sub += abs(x - lst); lst = x; } } sub += lst; ans = min(ans, sub); } while (next_permutation(perm.begin(), perm.end())); return ans; }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:10:9: warning: variable 'last' set but not used [-Wunused-but-set-variable]
   10 |     int last = 0;
      |         ^~~~
#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...