제출 #798409

#제출 시각아이디문제언어결과실행 시간메모리
798409PixelCat고대 책들 (IOI17_books)C++14
50 / 100
108 ms22684 KiB
#include "books.h"

#ifdef NYAOWO
#include "grader.cpp"
#endif

#include <bits/stdc++.h>
#define For(i, a, b) for(int i = a; i <= b; i++)
#define Forr(i, a, b) for(int i = a; i >= b; i--)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define sz(x) ((int)x.size())
#define eb emplace_back
#define int LL
using namespace std;
using i32 = int32_t;
using LL = long long;
using pii = pair<int, int>;

LL minimum_walk(vector<i32> p, i32 s) {
    assert(s >= 0);
    int n = sz(p);
    int ans = 0;
    int mx = 0;
    int oao = 0;
    vector<int> vis(n, 0);
    For(i, 0, n - 1) if(p[i] != i && !vis[i]) {
        int cur = i;
        int l = n + 1;
        int r = -1;
        do {
            l = min(l, cur);
            r = max(r, cur);
            ans += abs(p[cur] - cur);
            cur = p[cur];
            vis[cur] = 1;
        } while(cur != i);
        assert(l == i);
        oao += max(0ll, l - mx);
        mx = max(mx, r);
    }
    ans += oao * 2;
    return ans;
}
#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...