Submission #706462

#TimeUsernameProblemLanguageResultExecution timeMemory
706462Nonoze선물상자 (IOI15_boxes)C++14
100 / 100
873 ms273136 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;

/*int calc(int S[], int midl, int midr, int K, int N, int L) {
	int cnt=0, comp=0;
	for (int i = midl; i >= 0; --i)
	{
		if (cnt==0) comp+=S[i]*2;
		cnt++;
		if (cnt==K) cnt=0;
	}
	cnt=0;
	for (int i = midr; i < N; ++i)
	{
		if (cnt==0) comp+=(L-S[i])*2;
		cnt++;
		if (cnt==K)cnt=0;
	}
	return comp;
}*/

long long delivery(int N, int K, int L, int S[]) {
	sort(S, S+N);
	if (N==1)
	{
		return min((L-S[0])*2, S[0]*2);
	}
	vector<long long> l, r;
	for (int i = 0; i < N; ++i)
	{
		l.push_back(min(2*S[i], L));
		l.back()+=((i-K>=0)?l[i-K]:0);
	}
	for (int i = N-1; i >= 0; --i)
	{
		r.push_back(min(2*(L-S[i]), L));
		r.back()+=(((N-1)-i-K>=0)?r[(N-1)-i-K]:0);
	}
	long long res=r[N-1];
	for (int i = 0; i < N-1; ++i)
	{
		res=min(res, l[i]+r[N-i-2]);
	}
	return min(res, l[N-1]);
}
#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...