#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... |