Submission #877319

#TimeUsernameProblemLanguageResultExecution timeMemory
877319MilosMilutinovicAncient Books (IOI17_books)C++14
0 / 100
1 ms348 KiB
#include "books.h"
#include <bits/stdc++.h>

using namespace std;

long long minimum_walk(vector<int> p, int s) {
  int n = (int) p.size();
  vector<int> all;
  long long cost = 0;
  vector<bool> was(n);
  for (int i = 0; i < n; i++) {
    if (was[i]) {
      continue;
    }
    int x = i;
    vector<int> vec;
    while (!was[x]) {
      was[x] = true;
      vec.push_back(x);
      cost += abs(p[x] - x);
      x = p[x];
    }
    sort(vec.begin(), vec.end());
    if (vec.size() > 0) {
      all.push_back(vec[0]);
    }
  }
  if (!all.empty()) {
    cost += *max_element(all.begin(), all.end()) * 2;
  }
  return cost;
}
#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...