#include <bits/stdc++.h>
#include "books.h"
using namespace std;
#define pb push_back
#define st first
#define nd second
typedef long long ll;
typedef long double ld;
const ll I = 1000'000'000'000'000'000LL;
const int II = 2'000'000'000;
const ll M = 1000'000'007LL;
const int N = 1000'007;
bool vis[N];
int tab[N];
vector<pair<int, int>> inter;
ll minimum_walk(vector<int> _p, int _s)
{
int n = (int)_p.size();
ll ans = 0LL;
for(int i = 0; i < n; ++i)
tab[i] = _p[i];
for(int i = 0; i < n; ++i)
{
ans += (int)abs(tab[i] - i);
if(vis[i]) continue;
int l = i, r = i, v = i;
while(!vis[v])
{
vis[v] = 1;
l = min(l, v); r = max(r, v);
v = tab[v];
}
if(l != r || l == _s)
inter.pb(make_pair(l, r));
}
sort(inter.begin(), inter.end());
int cur = 0;
for(int i = 0; i < (int)inter.size(); ++i)
{
if(cur < inter[i].st) ans += 2LL * (ll)(inter[i].st - cur);
cur = max(cur, inter[i].nd);
}
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... |