제출 #1369258

#제출 시각아이디문제언어결과실행 시간메모리
136925812345678고대 책들 (IOI17_books)C++17
0 / 100
0 ms344 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], offl[nx], offr[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) offl[i]=offr[i]=1;
        // cout<<"debug "<<i<<' '<<mn<<' '<<mx<<'\n';
    }
    for (int i=n-2; i>=0; i--) offr[i]=offr[i]&&offr[i+1];
    for (int i=1; i<n; i++) offl[i]=offl[i]&&offl[i-1];
    for (int i=1; i<n; i++) qs[i]+=qs[i-1];
    for (int i=0; i<s; i++) if (qs[i]==0&&!offl[i]) res+=2;
    for (int i=s; i<n-1; i++) if (qs[i]==0&&!offr[i]) res+=2;
	return res;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…