This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "books.h"
#include <cassert>
struct Par
{
int l, r;
};
int abs(int x) { return x < 0 ? -x : x; }
std::vector<Par> segmentos;
long long minimum_walk(std::vector<int> p, int s) {
assert(!s);
int n = (int)p.size();
long long ans = 0;
int prim = n+1;
for(int i = 0, ini = 0, fim = 0; i < n; i++) {
if(p[i] == i) { ++ini; continue; }
prim = std::min(prim, i);
fim = std::max(fim, p[i]);
ans += abs(p[i] - i);
if(fim == i)
segmentos.push_back({ini, fim}), ini = i+1;
}
for(int i = 0; i < ((int)segmentos.size()) - 1; i++)
ans += 2*(segmentos[i+1].l - segmentos[i].r);
if(prim < n) ans += prim<<1;
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |