#include "books.h"
#include <bits/stdc++.h>
using namespace std;
int n,con;
bool xd=false;
struct biblioteca{
vector<int> valor,inde;
int espacio_ind=0,libro,maxi,posicion=0;
biblioteca(vector<int> x){
valor=x;
inde.resize(n);
for(int i=0;i<n;i++){
inde[x[i]]=i;
}
libro=x[0];
valor[0]=-1;
maxi=n-1;
while(valor[maxi]==maxi){
maxi--;
}
}
void actualizar(){
while(valor[maxi]==maxi){
maxi--;
posicion--;
con++;
}
}
void exchange(int x){
inde[libro]=x;
inde[valor[x]]=-1;
swap(libro,valor[x]);
}
void cccout(){
for(int i=0;i<n;i++){
cout << valor[i] << ' ';
}
cout << '\n';
for(int i=0;i<n;i++){
cout << inde[i] << ' ';
}
cout << '\n';
cout << posicion << '\n';
}
};
long long minimum_walk(vector<int> p, int s){
n=p.size();
biblioteca pub(p);
pub.posicion++;
con++;
for(;pub.posicion<pub.maxi;pub.posicion++,con++){
if(pub.valor[pub.posicion]>pub.libro){
pub.exchange(pub.posicion);
}
}
pub.exchange(pub.posicion);
pub.actualizar();
while(pub.maxi>0){
if(pub.libro==pub.posicion){
pub.exchange(pub.posicion);
pub.actualizar();
continue;
}
for(;pub.posicion>=0;pub.posicion--,con++){
if(pub.valor[pub.posicion]<pub.libro){
pub.exchange(pub.posicion);
}else if(pub.valor[pub.posicion]==pub.maxi){
pub.exchange(pub.posicion);
pub.posicion++;
con++;
for(;pub.posicion<pub.maxi;pub.posicion++,con++){
if(pub.valor[pub.posicion]>pub.libro){
pub.exchange(pub.posicion);
}
}
pub.exchange(pub.posicion);
break;
}
}
}
//pub.cccout();
return con;
}
# | 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... |