Submission #941497

#TimeUsernameProblemLanguageResultExecution timeMemory
941497beabossAncient Books (IOI17_books)C++14
50 / 100
113 ms24144 KiB
// Source: https://oj.uz/problem/view/IOI17_books // #include "books.h" #include "bits/stdc++.h" using namespace std; #define s second #define f first #define pb push_back typedef long long ll; typedef pair<int, int> pii; typedef vector<pii> vpii; typedef vector<int> vi; #define FOR(i, a, b) for (int i = (a); i<b; i++) bool ckmin(int& a, int b){ return b < a ? a = b, true : false; } bool ckmax(int& a, int b){ return b > a ? a = b, true : false; } const int N = 1e6 + 10; int ri[N], le[N]; bool vis[N]; ll minimum_walk(vector<int> p, int s) { if (s == 0) { ll ans = 0; int n = p.size(); FOR(i, 0, n) { if (!vis[i]) { int l, r; r = l = i; int cur = p[i]; while (cur != i) { l = min(l, cur);r=max(r, cur); cur=p[cur]; } cur = i; do { ans += abs(p[cur]-cur); le[cur] = l; ri[cur] = r; vis[cur]=true; cur=p[cur]; } while (cur != i); } } int en = n-1; while (en != -1 && p[en] == en) en--; int r =0; FOR(i, 0, en+1) { if (r < i) { r++; ans+=2; } r = max(p[i], r); } return ans; } else assert(false); } // int main() { // ios::sync_with_stdio(false); // cin.tie(nullptr); // int res = minimum_walk({0, 2, 3, 1, 5, 6, 4}, 0); // cout << res << endl; // }
#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...