이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "books.h"
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
long long minimum_walk(vector<int> a, int s)
{
int n = a.size();
long long ans = 0;
vector<bool> used(n);
vector<pair<int, int> > p;
for (int i = 0; i < n; ++i)
if (!used[i])
{
int j = i;
p.push_back({i, i});
do {
used[j] = true;
j = a[j];
p.back().second = max(p.back().second, j);
} while(j != i);
}
sort(p.begin(), p.end());
int r = 0;
for (pair<int, int>& x: p)
if (x.first <= r)
r = max(r, x.second);
else
{
ans += 2 * (x.first - r);
// ans = max(ans, 2LL * x.first);
r = x.second;
}
for (int i = 0; i < n; ++i)
ans += abs(a[i] - i);
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... |