Submission #705784

#TimeUsernameProblemLanguageResultExecution timeMemory
705784Abrar_Al_Samit고대 책들 (IOI17_books)C++17
50 / 100
129 ms15848 KiB
#include <bits/stdc++.h> using namespace std; const int nax = 1e6; bool vis[nax]; int n; long long minimum_walk(vector<int>p, int s) { long long ans = 0; n = p.size(); for(int i=0; i<n; ++i) { if(vis[i]) continue; if(i==p[i]) continue; int j = i; while(1) { if(vis[j]) break; vis[j] = 1; ans += abs(j-p[j]); j = p[j]; } } int lst = n; while(lst-1>=0 && p[lst-1]==lst-1) --lst; int fur = -1; int cnt = 0; memset(vis, 0, sizeof vis); for(int i=0; i<lst; ++i) if(!vis[i]) { if(i>fur) { ++cnt; } int j = i; while(1) { if(vis[j]) break; vis[j] = true; fur = max(j, fur); j = p[j]; } } ans += max(0, cnt-1) * 2; 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...