Submission #581788

#TimeUsernameProblemLanguageResultExecution timeMemory
581788alireza_kavianiAncient Books (IOI17_books)C++17
0 / 100
1 ms340 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; typedef long long ll; typedef pair<int, int> pii; #define sep ' ' #define X first #define Y second #define all(x) (x).begin() , (x).end() #define SZ(x) int(x.size()) const int MAXN = 1e6 + 10; ll n , s , sum , P[MAXN] , mark[MAXN]; ll minimum_walk(vector<int> p, int S) { n = SZ(p); s = S; for(int i = 0 ; i < n ; i++){ P[i] = p[i]; sum += abs(P[i] - i); } vector<pii> vec; for(int i = 0 ; i < n ; i++){ if(!mark[i]){ int mn = MAXN , mx = 0 , x = i; while(!mark[x]){ mark[x] = 1; mn = min(mn , x); mx = max(mx , x); x = P[x]; } vec.push_back({mn , mx}); } } sort(all(vec)); vector<int> comps; for(pii i : vec){ if(SZ(comps) == 0 || comps.back() < i.X){ comps.push_back(i.Y); } else{ comps[SZ(comps) - 1] = max(comps.back() , i.Y); } } return sum + SZ(comps); }
#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...