제출 #1233116

#제출 시각아이디문제언어결과실행 시간메모리
1233116simplemind_31고대 책들 (IOI17_books)C++20
0 / 100
2093 ms328 KiB
#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 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...