Submission #821193

#TimeUsernameProblemLanguageResultExecution timeMemory
821193vjudge1Ancient Books (IOI17_books)C++17
50 / 100
90 ms12036 KiB
#include "books.h"

#include <bits/stdc++.h>

using namespace std;

long long minimum_walk(std::vector<int> p, int s) {
    long long res = 0;
    vector<int> pre(p.size(), 0);
    for (int i = 0; i < p.size(); i++) {
        res += abs(i - p[i]);
        int l = min(i, p[i]);
        int r = max(i, p[i]);
        pre[l]++;
        pre[r]--;
    }
    int last = p.size() - 1;
    while (last > s && p[last] == last) {
        last--;
    }
    int first = 0;
    while (first < s && p[first] == first) {
        first++;
    }
    for (int i = 0; i < last; i++) {
        pre[i + 1] += pre[i];
    }
    for (int i = first; i < last; i++) {
        if (pre[i] == 0) {
            res += 2;
        }
    }

    return res;
}

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:10:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     for (int i = 0; i < p.size(); i++) {
      |                     ~~^~~~~~~~~~
#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...