Submission #770123

#TimeUsernameProblemLanguageResultExecution timeMemory
770123APROHACKAncient Books (IOI17_books)C++14
0 / 100
1 ms308 KiB
#include "books.h" #include <bits/stdc++.h> #define ll long long #define ff first #define ss second #define pb push_back using namespace std; int n; int startTo[1000000]; int searchR(int pos){ for(int i = pos ; i < n ; i ++){ if(startTo[i] != -1)return i; } return -1; } int searchL(int pos){ for(int i = pos-1 ; i>= 0 ; i --){ if(startTo[i] != -1)return i; } return -1; } long long minimum_walk(std::vector<int> p, int s) { n = p.size(); int cont = 0; for(int i = 0 ; i < n ; i ++){ startTo[i] = -1; if(p[i] > i){ startTo[i] = p[i]; cont ++; } } int pos = 0, temp; ll ans = 0; while(true){ int nextR = searchR(pos); if(nextR != -1){ ans += nextR-pos; pos = nextR; cout << "move to " << nextR << endl; ans+= startTo[pos]-pos; temp = pos; pos = startTo[pos]; cout << "move to " << startTo[temp] << endl; startTo[temp] = -1; continue; } int nextL = searchL(pos); if(nextL != -1){ ans += pos-nextL; pos = nextL; cout << "move to " << nextL << endl; ans += startTo[pos] - pos; temp = pos; pos = startTo[pos]; cout << "move to " << startTo[temp] << endl; startTo[temp] = -1; continue; } ans+= pos; return ans; } }
#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...