Submission #51567

#TimeUsernameProblemLanguageResultExecution timeMemory
51567aomeAncient Books (IOI17_books)C++17
50 / 100
225 ms13412 KiB
#include <bits/stdc++.h> #include "books.h" using namespace std; const int N = 1000005; bool visit[N]; long long minimum_walk(vector<int> p, int s) { int n = p.size(); long long res = 0; for (int i = 0; i < n; ++i) res += abs(i - p[i]); int l, r; l = r = s; queue<int> qu; qu.push(s), visit[s] = 1; while (1) { while (qu.size()) { int u = qu.front(); qu.pop(); while (l > p[u]) { l--, visit[l] = 1, qu.push(l); } while (r < p[u]) { r++, visit[r] = 1, qu.push(r); } } int cnt = 0; bool found = 0; while (1) { ++cnt; l--; if (l >= 0 && p[l] != l) { found = 1, qu.push(l); break; } r++; if (r < n && p[r] != r) { found = 1, qu.push(r); break; } if (l < 0 && r >= n) break; } if (!found) break; res += cnt * 2; } return res; }
#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...