Submission #420289

#TimeUsernameProblemLanguageResultExecution timeMemory
420289AzimjonBoxes with souvenirs (IOI15_boxes)C++17
20 / 100
1 ms292 KiB
#include "boxes.h"
#include <bits/stdc++.h>

using namespace std;

const int INF = 2e9;

long long delivery(int n, int k, int L, int p[]) {
	long long ans = 0;
	double ur = L / 2;

	int l, r;
	l = 0;
	r = n - 1;

	while (l + k - 1 < n && p[l + k - 1] <= ur) {
		ans += 2 * p[l + k - 1];
		l += k;
	}
	// cerr << ans << endl;
	while (r - k + 1 >= 0 && p[r - k + 1] > (ur)) {
		ans += 2 * (L - p[r - k + 1]);
		r -= k;
	}

	int i;
	for (i = l; i <= r; i++) {
		if (p[i] > ur) break;
	}

	long long qo = 2 * p[i - 1] + 2 * (L - p[i]);

	int qs = (r - l + 1);

	if (qs <= 0) return ans;

	qo = min(qo, (long long)ceil(1. * qs / k) * L);

	return ans + qo;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...