Submission #1369256

#TimeUsernameProblemLanguageResultExecution timeMemory
136925612345678Ancient Books (IOI17_books)C++17
50 / 100
93 ms19944 KiB
#include "books.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int nx=1e6+5;

int n, vs[nx], qs[nx], off[nx];
ll res;

long long minimum_walk(std::vector<int> p, int s) {
    n=p.size();
    for (int i=0; i<n; i++)
    {
        res+=abs(i-p[i]);
        if (vs[i]) continue;
        int mn=i, mx=i, u=i;
        vs[i]=1;
        while (p[u]!=i) u=p[u], vs[u]=1, mx=max(mx, u);
        qs[mn]++, qs[mx]--;
        if (mn==mx) off[i]=1;
        // cout<<"debug "<<i<<' '<<mn<<' '<<mx<<'\n';
    }
    for (int i=n-2; i>=0; i--) off[i]=off[i]&&off[i+1];
    for (int i=1; i<n; i++) qs[i]+=qs[i-1];
    for (int i=0; i<n-1; i++) if (qs[i]==0&&!off[i+1]) res+=2;
	return res;
}
#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...