Submission #706434

#TimeUsernameProblemLanguageResultExecution timeMemory
706434NonozeBoxes with souvenirs (IOI15_boxes)C++14
0 / 100
1 ms340 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 p[]) {
	sort(p, p+N);
	int moit=L/2, mid=0;
	if (N==1)
	{
		return min((L-p[0])*2, p[0]*2);
	}
	for (int i = 0; i < N; ++i)
	{
		if (p[i]<=moit) mid=p[i];
	}
	int l=mid, r=mid+1;
	for (int i = 0; i < K; ++i)
	{
		if (l<0) r++;
		else if (r>=N) l--;
		else if (abs(p[l]-moit)<abs(p[r]-moit)) {
			l--;
		} else {
			r++;
		}
	}
	return min(L+calc(p, l, r, K, N, L), min(calc(p, mid, mid+1, K, N, L), calc(p, mid-1, mid, K, N, L)));
}
#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...