제출 #568389

#제출 시각아이디문제언어결과실행 시간메모리
568389CSQ31선물상자 (IOI15_boxes)C++17
100 / 100
552 ms222288 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;

ll delivery(int n, int k, int L, int p[]) {
	vector<ll>pref(n,0),suff(n,0);
	for(int i=0;i<n;i++){
		pref[i] = 2LL*p[i];
		if(i-k>=0)pref[i]+=pref[i-k];
	}
	for(int i=n-1;i>=0;i--){
		suff[i] = 2LL*(L-p[i]);
		if(i+k<n)suff[i]+=suff[i+k];
	}
	ll ans = 1e18;
	ans = min(ans,suff[0]);
	ans = min(ans,pref[n-1]);
	for(int i=0;i+1<n;i++)ans = min(ans,pref[i] + suff[i+1]);
	for(int i=k-1;i<n;i++){
		ll cost = L;
		if(i-k>=0)cost+=pref[i-k];
		if(i+1<n)cost+=suff[i+1];
		ans = min(ans,cost);
	}
	return ans;
}
/*
int main()
{
	int n,k,l;
	cin>>n>>k>>l;
	int p[n];
	for(int i=0;i<n;i++)cin>>p[i];
	cout<<delivery(n,k,l,p);
	
}
*/
#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...