Submission #406889

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
4068892021-05-18 07:16:41ja_kingyAncient Books (IOI17_books)C++14
100 / 100
221 ms34952 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
long long minimum_walk(vector<int> p, int s) {
long long ans = 0;
int n = p.size(), ccnt = 0;
vector<int> mn(n), mx(n), cyc(n);
vector<pii> evs;
for (int i = 0; i < n; ++i) {
ans += abs(i-p[i]);
if (!cyc[i]) {
ccnt++;
cyc[i] = ccnt;
mn[ccnt] = mx[ccnt] = i;
for (int x = p[i]; x != i; x = p[x]) {
cyc[x] = ccnt;
mn[ccnt] = min(mn[ccnt], x);
mx[ccnt] = max(mx[ccnt], x);
}
if (mn[ccnt] != mx[ccnt] || i == s) {
evs.push_back({mn[ccnt], -1});
evs.push_back({mx[ccnt], 1});
}
}
}
sort(evs.begin(), evs.end());
int rcnt = 0, pv = -1, fst;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:54:5: warning: 'fst' may be used uninitialized in this function [-Wmaybe-uninitialized]
   54 |     if (l == fst || r == pv) break;
      |     ^~
#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...