Submission #835148

#TimeUsernameProblemLanguageResultExecution timeMemory
835148oscar1fAncient Books (IOI17_books)C++17
12 / 100
1 ms340 KiB
#include<bits/stdc++.h> #include "books.h" using namespace std; using ll=long long; const ll MAX_TAILLE=1000*1000+5; ll nbVal,rep,posDeb,nbCompo,valFin,fin; vector<ll> obj,listeCompo; ll idCompo[MAX_TAILLE],finCompo[MAX_TAILLE],tailleCompo[MAX_TAILLE]; void DFS(ll pos) { if (idCompo[pos]==0) { idCompo[pos]=nbCompo; finCompo[pos]=valFin; tailleCompo[nbCompo]++; DFS(obj[pos]); } } ll minimum_walk(vector<int> p, int s) { posDeb=s; nbVal=p.size(); for (auto i:p) { obj.push_back(i); } for (ll i=nbVal-1;i>=0;i--) { if (idCompo[i]==0) { nbCompo++; valFin=i; DFS(i); } rep+=abs(i-obj[i]); } fin=nbVal-1; while (fin>=0 and tailleCompo[idCompo[fin]]==1) { fin--; } int pos=0; while (pos<fin) { if (finCompo[pos]==pos) { pos++; rep+=2; } else { pos=finCompo[pos]; } } return rep; }
#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...