Submission #424384

#TimeUsernameProblemLanguageResultExecution timeMemory
424384SuhaibSawalha1Boxes with souvenirs (IOI15_boxes)C++17
20 / 100
206 ms268 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;

long long delivery(int N, int K, int L, int p[]) {
	if (N <= 10) {
		int per[N];
		iota(per, per + N, 0);
		long long ans = 9e18;
		do {
			long long res = 0;
			int mx = 0;
			for (int i = 0; i < N; ++i) {
				if (i % K == 0) {
					res += min(2 * mx, L);
					mx = 0;
				}
				mx = max(mx, p[per[i]]);
			}
			res += min(2 * mx, L);
			ans = min(ans, res);
		} while (next_permutation(per, per + N));
		return ans;
	}
	long long ans, A[N], A2[N], KS = 0;
	for (int i = 0; i < N; ++i) {
		if (i % K == 0 && i) {
			KS += min(2 * p[i - 1], L);
		}
		A[i] = KS + min(2 * p[i], L);
	}	
	KS = 0;
	for (int i = N - 1; ~i; --i) {
		if ((N - i - 1) % K == 0 && i < N - 1) {
			KS += min(2 * (L - p[i + 1]), L);
		}
		A2[i] = KS + min(2 * (L - p[i]), L);
	}
	ans = min(A[N - 1], A2[0]);
	for (int i = 0; i < N - 1; ++i) {
		ans = min(ans, A[i] + A2[i + 1]);
	}
	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...
#Verdict Execution timeMemoryGrader output
Fetching results...