Submission #399793

#TimeUsernameProblemLanguageResultExecution timeMemory
399793LucaDantasAncient Books (IOI17_books)C++17
50 / 100
159 ms18756 KiB
#include "books.h"
#include <cstdio>
#include <cassert>
#include <cmath>

constexpr int maxn = 1e6+10;

int opa[maxn];

long long minimum_walk(std::vector<int> p, int s) {
	int n = (int)p.size();
	long long ans = 0;

	int fim = 0;
	for(int i = 0; i < n; i++) {
		fim = std::max(fim, p[i]);
		ans += abs(i - p[i]);
		if(fim > i) opa[i] = 1;
	}
	int a = 0;
	for(int i = 0; i < n; i++) {
		if(!opa[i]) ++a;
		else ans += a<<1, a = 0;
	}
	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...