#include <bits/stdc++.h>
#include "books.h"
using namespace std;
long long int r;
vector <int> b;
vector <pair <int, int> > d;
int l;
int N;
void mw(int i, int j, int k)
{
int aux=i-b[i];
if(aux<0){
aux*=-1;
}
d[k].first+=aux;
if(i<d[k].second || d[k].second==-1){
d[k].second=i;
}
if(b[i]!=j){
mw(b[i], j, k);
}
b[i]=i;
return;
}
long long int minimum_walk(vector <int> p, int s){
N=p.size();
d.assign(N, pair <int, int>(make_pair(0, -1)));
b.resize(N);
l=s;
for(int i=0; i<N; ++i){
b[i]=p[i];
}
int j=0;
for(int i=0; i<N; ++i){
if(b[i]!=i){
mw(i, i, j);
++j;
}
}
r=2*d[j-1].second;
for(int k=0; k<j; ++k){
r+=d[k].first;
}
return r;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |