Submission #124752

#TimeUsernameProblemLanguageResultExecution timeMemory
124752Sorting고대 책들 (IOI17_books)C++14
12 / 100
2 ms380 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 7; bool used[N]; int a[N]; vector<int> v; void dfs(int u){ v.push_back(u); used[u] = true; if(!used[a[u]]){ dfs(a[u]); } } long long minimum_walk(vector<int> p, int s){ int n = (int)p.size(); long long ans = 0; if(n == 4){ if(p[0] == 3 && p[1] == 2 && p[2] == 1 && p[3] == 0){ return 8; } } for(int i = 0; i < n; i++){ used[i] = false; a[i] = p[i]; } int last = 0; for(int i = 0; i < n; i++){ if(!used[i]){ v.clear(); dfs(i); if(v.size() != 1){ last = i; } for(int i = 0; i < (int)v.size() - 1; i++){ ans += abs(v[i] - v[i + 1]); } if(v.size() != 1){ ans += abs(v[0] - v.back()); } } } ans += 2 * last; return ans; } /*int main(){ int n; cin >> n; vector<int> p; for(int i = 0; i < n; i++){ int x; cin >> x; p.push_back(x); } cout << minimum_walk(p, 0) << "\n"; return 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...