Submission #114022

#TimeUsernameProblemLanguageResultExecution timeMemory
114022faustaadpAncient Books (IOI17_books)C++17
50 / 100
287 ms46288 KiB
#include "books.h" #include<bits/stdc++.h> typedef long long ll; #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; ll n,i,b[1010101],ka[1010101],R,j; ll K[1010101]; ll nx[1010101]; void dfs(ll aa) { b[aa]=1; R=max(R,aa); if(!b[nx[aa]]) dfs(nx[aa]); } long long minimum_walk(std::vector<int> x, int s) { n=x.size(); ll jaw=0; for(i=0;i<n;i++)nx[i]=x[i]; for(i=0;i<n;i++)jaw+=abs(i-x[i]); ll tam=0; for(i=0;i<n;i++) { if(b[i])continue; R=0; dfs(i); ka[i]=R; } for(i=0;i<n;i++) { R=ka[i]; j=i; while(j<R) { j++; R=max(R,ka[j]); } K[i]=j; i=j; } ll nn=-1; for(i=(n-1);i>=0;i--) if(K[i]!=i) { nn=i; break; } for(i=0;i<nn;i++) { if(i!=0) tam+=2; i=K[i]; } // cout<<jaw<<" "<<tam<<"\n"; return jaw+tam; }
#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...