This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "books.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define F first
#define S second
long long minimum_walk(vector<int> p, int s){
    ll n=p.size(), r=0, x=n, y=0, z=-1;
    bool b[n];
    for(int i=0; i<n; i++){
        b[i]=0;
        if(p[i]==i)b[i]=1;
    }
    vector<pair<ll, ll>> v;
    for(ll i=0; i<n; i++){
        if(!b[i]){
            //cout << z << " ";
            if(i>=z){
                if(z!=-1)r+=2*(i-z);
            }
            r+=p[i]-i;
            y=p[i];
            while(y!=i){
                z=max(z, y);
                b[y]=1;
                r+=abs(p[y]-y);
                y=p[y];
            }
            b[y]=1;
            z=max(z, y);
            v.push_back({i, z});
        }
    }
    if(v.empty())return 0;
    unique(v.begin(), v.end());
    sort(v.begin(), v.end());
    if(s>v.back().S)return r+2*(s-v.back().S);
    if(s<v[0].F) return r+2*(v[0].F-s);
    x=0;
    z=0;
//    for(int i=0; i<v.size(); i++){
//        if(i+1==v.size()){
//            if(s>=v[i].F&&s<=v[i].S&&v[i].S>z){
//                //cout << v[i].F << " " << v[i].S << "\n";
//                x=min(s-v[i].F, v[i].S-s);
//                z=v[i].S;
//            }
//        }
//        else if(v[i+1].F!=v[i].F){
//            if(s>=v[i].F&&s<=v[i].S&&v[i].S>z){
//                x=min(s-v[i].F, v[i].S-s);
//                z=v[i].S;
//            }
//        }
//    }
	return r+2*x;
}
| # | 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... |