이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "books.h"
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) {
int n = (int)p.size();
long long ans = 0;
bool ok = 1;
for(int i = 0, ini = 0, fim = 0; i < n; i++) {
if(p[i] == i) { ++ini; continue; }
fim = std::max(fim, p[i]);
ans += abs(p[i] - i);
if(fim == i) {
if(ok && ini >= s) segmentos.push_back({s, s}), ok = 0;
segmentos.push_back({ini, fim}), ini = i+1;
if(ini <= s && fim >= s) ok = 0;
}
}
for(int i = 0; i < ((int)segmentos.size()) - 1; i++)
ans += 2*(segmentos[i+1].l - segmentos[i].r);
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... |