Submission #835143

#TimeUsernameProblemLanguageResultExecution timeMemory
835143oscar1fAncient 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,nbBon; 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); if (tailleCompo[nbCompo]==1) { nbBon++; } } rep+=abs(i-obj[i]); } int pos=0; while (pos!=nbVal-1 and nbBon<nbVal) { if (finCompo[pos]==pos) { pos++; rep+=2; } else { nbBon+=tailleCompo[idCompo[pos]]; 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...