Submission #1244301

#TimeUsernameProblemLanguageResultExecution timeMemory
1244301thelegendary08Ancient Books (IOI17_books)C++17
12 / 100
1 ms328 KiB
#include "books.h" #include<bits/stdc++.h> #define vi vector<int> #define vb vector<bool> #define pii pair<int,int> #define vpii vector<pair<int,int>> #define vvi vector<vi> #define mp make_pair #define pb push_back #define f0r(i,n) for(int i = 0; i<n; i++) #define FOR(i, k, n) for(int i = k; i<n; i++) #define dout(x) cout<<x<<' '<<#x<<endl; #define vout(x) for(auto u : x)cout<<u<<' '; cout<<endl; using namespace std; long long minimum_walk(std::vector<signed> p, signed s) { int n = p.size(); int ans = 0; vb vis(n); vpii rngs; f0r(i,n){ if(!vis[i]){ if(p[i] == i){ vis[i] = 1; } else{ int cur = p[i]; ans += abs(cur - i); vis[cur] = 1; int mxc = cur; while(cur != i){ int ori = cur; cur = p[cur]; vis[cur] = 1; ans += abs(ori - cur); mxc = max(mxc, cur); } rngs.pb(mp(i, mxc)); } } } sort(rngs.begin(), rngs.end()); int res = 0; int pv = 0; f0r(i, rngs.size()){ if(pv < rngs[i].first){ res += rngs[i].first - pv; } pv = rngs[i].second; } res *= 2; ans += res; 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...