Submission #1270358

#TimeUsernameProblemLanguageResultExecution timeMemory
1270358cmiucBoxes with souvenirs (IOI15_boxes)C++20
10 / 100
0 ms328 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include "boxes.h"

using namespace std;
const int N = 1<<18;
int a[N], d[N];

long long delivery(int n, int k, int l, int p[]){
	vector<int> vec;
	for (int i=0;i<n;i++)
		vec.push_back(p[i]);

	sort(begin(vec), end(vec));

	long long Ans = 0, hf = l / 2;
	while (vec.size() >= k and vec[vec.size() - k] >= l - hf){
		Ans += 2 * l - 2 * vec[vec.size() - k];
		for (int i=0;i<k;i++)
			vec.pop_back();
	}
	reverse(begin(vec), end(vec));

	while (vec.size() >= k and vec[vec.size() - k] <= hf){
		Ans += 2 * vec[vec.size() - k];
		for (int i=0;i<k;i++)
			vec.pop_back();
	}
	reverse(begin(vec), end(vec));

	if (vec.size() == 0)
		return Ans;
	if (vec.size() <= k){
		return Ans + min(l, min(vec.back() * 2, l + l - 2 * vec[0]));
	}
	return Ans + min(vec[vec.size() - k - 1] * 2, (l - vec[k]) * 2);
}
#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...