Submission #156409

#TimeUsernameProblemLanguageResultExecution timeMemory
156409dolphingarlicAncient Books (IOI17_books)C++14
0 / 100
2 ms376 KiB
#include "books.h" #include <math.h> #include <algorithm> long long minimum_walk(std::vector<int> p, int s) { int n = p.size(); long long dist = 0, ans = 0; int greatest = s, l = s, r = s; for (int i = s; ~i; i--) { if (p[i] != i) { ans += abs(p[i] - i); if (p[i] > s) { l = std::min(l, i); r = std::max(r, p[i]); } if (i < greatest) dist += i - greatest; greatest = std::min(greatest, std::min(i, p[i])); } } greatest = s; for (int i = s + 1; i < n; i++) { if (p[i] != i) { ans += abs(p[i] - i); if (p[i] < s) { l = std::min(l, p[i]); r = std::max(r, p[i]); } if (i > greatest) dist += i - greatest; greatest = std::max(greatest, std::max(i, p[i])); } } return ans + 2 * dist + std::min(s - l, r - s); }
#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...