Submission #393608

#TimeUsernameProblemLanguageResultExecution timeMemory
393608JimmyZJXAncient Books (IOI17_books)C++14
0 / 100
1 ms296 KiB
#include <iostream> #include <fstream> #include <algorithm> #include <cstring> #include <climits> #include <cassert> #include <tuple> #include <queue> #include <stack> #include <vector> #include <map> #include <set> #include <string> #include <unordered_set> #include <unordered_map> #include <numeric> using namespace std; typedef long long LL; typedef vector<int> Vi; typedef vector<LL> VL; typedef vector<bool> Vb; typedef vector<vector<int>> Vii; typedef vector<vector<vector<int>>> Viii; typedef vector<vector<pair<int, int>>> Vip; #define forR(i, n) for (int i = 0; i < (n); i++) LL minimum_walk(Vi p, int s) { int n = p.size(); LL ans = 0; int pos = 0; for (int i = 0; i < n; i++) { if (p[i] == i) continue; // move to i ans += abs(i - pos); int hand = p[i]; pos = i; while (true) { // move to hand ans += abs(hand - pos); pos = hand; if (pos == i) break; // loop hand = p[pos]; p[pos] = pos; } p[i] = i; } ans += abs(pos - 0); return ans; } #ifdef TEST_LOCAL int main() { auto r = minimum_walk(Vi{ 0, 2, 3, 1 }, 0); return 0; } #endif
#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...