제출 #340526

#제출 시각아이디문제언어결과실행 시간메모리
340526Kerim선물상자 (IOI15_boxes)C++17
100 / 100
551 ms248172 KiB
#include "boxes.h"
#include "stdio.h"
#define MAXN 10000002
#define ll long long
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}

ll pre[MAXN],suf[MAXN];
int arr[MAXN];
long long delivery(int n, int k, int l, int as[]) {
	for(int i=1;i<=n;i++)
		arr[i]=as[i-1];
	arr[0]=0;arr[n+1]=l;
	for(int i=1;i<=n;i++){
		pre[i]=arr[i];
		if(i>=k)pre[i]+=pre[i-k];	
	}
	for(int i=n;i>=1;i--){
		suf[i]=l-arr[i];
		if(i+k<=n+1)suf[i]+=suf[i+k];
	}
	ll ans=((n+k-1)/k)*1LL*l;
	for(int a=0;a<=n;a++)
		umin(ans,2*(pre[a]+suf[a+1]));
	for(int a=0;a+k<=n;a++)
		umin(ans,2*(pre[a]+suf[a+k+1])+l);
	/*
	for(int a=0;a<=n;a++)
		for(int b=a+1;b<=n+1;b++)
			umin(ans,2*(pre[a]+suf[b])+((b-a+k-2)/k)*1LL*l);
	*/
    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...