Submission #314143

#TimeUsernameProblemLanguageResultExecution timeMemory
314143joseacazBoxes with souvenirs (IOI15_boxes)C++17
10 / 100
1 ms416 KiB
#include "boxes.h"
#include <bits/stdc++.h>
#define MAXN 1000006
#define INF (1LL << 62LL)
 
using namespace std;
typedef long long ll;
 
int N, K, L;
ll DP[MAXN], pre[MAXN];
vector < int > P;
 
ll cost ( int i, int j )
{
	return min ( (ll)L, 2 * min ( pre[j], pre[N + 1] - pre[i] ) );
}
 
ll delivery ( int _n, int _k, int _l, int _p[] )
{
	swap ( N, _n );
	swap ( K, _k );
	swap ( L, _l );
	P.push_back ( 0 );
	for ( int i = 0; i < N; i++ )
		P.push_back ( _p[i] );
	P.push_back ( L );
	
	for ( int i = 1; i <= N + 1; i++ )
		pre[i] = pre[i - 1] + (P[i] - P[i - 1]);
	
	for ( int i = N; i >= 1; i-- )
	{
		DP[i] = INF;
		for ( int k = 0; k <= K; k += K )
			if ( i + k <= N + 1 )
				DP[i] = min ( DP[i], cost ( i, i + k - 1 ) + DP[i + k] );
	}
 
	/*for ( int i = 1; i <= N; i++ )
		cout << DP[i] << " ";
	cout << "\n";*/
 
	return DP[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...