Submission #1025485

#TimeUsernameProblemLanguageResultExecution timeMemory
1025485huutuan고대 책들 (IOI17_books)C++14
50 / 100
113 ms28348 KiB
#include "books.h"

#include <bits/stdc++.h>

using namespace std;

const int N=1e6;
int vis[N], n;

long long minimum_walk(vector<int> p, int s) {
   while (p.size() && p.back()==(int)p.size()-1) p.pop_back();
   n=p.size();
   vector<pair<int, int>> v;
   long long ans=0;
   for (int i=0; i<n; ++i) if (!vis[i]){
      int mx=i, mn=i;
      while (!vis[i]){
         mx=max(mx, i);
         mn=min(mn, i);
         vis[i]=1;
         ans+=abs(p[i]-i);
         i=p[i];
      }
      v.emplace_back(mn, mx);
   }
   sort(v.begin(), v.end());
   int cur=0;
   for (auto &i:v){
      if (cur<=i.first) ans+=(i.first-cur)*2;
      cur=max(cur, i.second);
   }
   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...