Submission #137632

#TimeUsernameProblemLanguageResultExecution timeMemory
137632random0029Ancient Books (IOI17_books)C++14
0 / 100
2 ms420 KiB
// ItnoE #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1000006; int n, M[N], A[N]; int64_t minimum_walk(vector < int > P, int st) { n = (int)P.size(); ll SM = 0; for (int i = 0; i < n; i ++) SM += abs(P[i] - i); for (int i = 0; i < n; i ++) if (!M[i] && P[i] != i) { int v = i; int Mx = -N * 2, Mn = N * 2; while (!M[v]) { M[v] = 1; Mn = min(Mn, v); Mx = max(Mx, v); v = P[v]; } A[Mn] = max(A[Mn], Mx); } bool fail = 1; int Mx = 0, last = -1; vector < pair < int , int > > vec; for (int i = 0; i < n; i ++) { Mx = max({Mx, A[i], i}); if (P[i] != i && last == -1) last = i; if (P[i] == i) continue; if (Mx == i) vec.push_back({last, Mx}), last = -1; if (i <= st && st <= Mx) fail = 0; } //if (fail) //vec.push_back({st, st}); //sort(vec.begin(), vec.end()); for (int i = 1; i < (int)vec.size(); i ++) { SM += (vec[i].first - vec[i - 1].second) * 2; assert(vec[i].first > vec[i - 1].second); } return (SM); }

Compilation message (stderr)

books.cpp: In function 'int64_t minimum_walk(std::vector<int>, int)':
books.cpp:27:7: warning: variable 'fail' set but not used [-Wunused-but-set-variable]
  bool fail = 1;
       ^~~~
#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...