Submission #1366152

#TimeUsernameProblemLanguageResultExecution timeMemory
1366152marizaAncient Books (IOI17_books)C++20
0 / 100
3 ms8004 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll N=1e6;

struct DSU{
    ll p[N];
    ll sz;

    void init(ll n){
        sz=n;
        for(ll i=0; i<n; i++){
            p[i]=i;
        }
    }

    ll find(ll u){
        if(p[u]==u) return u;
        else return p[u]=find(p[u]);
    }

    void merge(ll u, ll v){
        u=find(u);
        v=find(v);

        if(u==v) return;
        sz--;
        p[u]=v;
    }
};

long long minimum_walk(vector<int> a, int s){
    ll n=a.size();

    DSU dsu;
    dsu.init(n);

    ll ans=0;
    for(ll i=0; i<n; i++){
        dsu.merge(i,a[i]);
        ans+=abs(i-a[i]);
    }
    ans+=dsu.sz;

	return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...