제출 #73670

#제출 시각아이디문제언어결과실행 시간메모리
73670aquablitz11고대 책들 (IOI17_books)C++14
50 / 100
313 ms12412 KiB
#include <bits/stdc++.h>
#include "books.h"
using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using plpii = pair<ll, pii>;

const int N = 1e6+10;
const ll INF = 1e9;

int qs[N];

ll minimum_walk(vector<int> p, int s)
{
    int n = p.size();
    ll dist = 0;
    for (int i = 0; i < n; ++i) {
        if (p[i] == -1) continue;
        if (p[i] == i) continue;
        int u = i;
        while (p[u] != -1) {
            int v = p[u];
            dist += abs(u-v);
            p[u] = -1;
            qs[min(u, v)] += 1;
            qs[max(u, v)] -= 1;
            u = v;
        }
    }
    int last = -1;
    if (p[s] == s) p[s] = -1;
    for (int i = 0; i < n; ++i) {
        if (i > 0) qs[i] += qs[i-1];
        if (last != -1 && p[i] == -1) {
            dist += 2*(i-last);
            last = -1;
        }
        if (qs[i] == 0 && p[i] == -1)
            last = i;
    }

    return dist;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...