#include "boxes.h"
#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
using namespace std;
const int INF = numeric_limits<int>::max()/2;
map<pii, int> dp;
vector<int> pos;
int n,K,L;
int rec(int l, int r){
if(dp.count({l,r})) return dp[{l,r}];
if(l == 0 && r == 0){
return 0;
}
int mi = INF;
for(int t = 0; t <= K; t++){
if(t == 0 && r == 0) continue;
if(t == K && l == 0) continue;
int cost = 0;
if(l-1 >= 0){
cost += 2*pos[l-1];
}
if(n-r < n){
cost += (2*(L-pos[n-r]));
}
cost = min(cost, L);
int nl =max(0LL,l-t);
int nr = max(0LL,r-(K-t));
mi = min(mi, rec(nl,nr) + cost);
}
dp[{l,r}] = mi;
return mi;
}
long long delivery(int32_t N, int32_t k, int32_t l, int32_t p[]) {
n = N;
K = k;
L = l;
pos.resize(n);
for(int i = 0; i < n; i++){
pos[i] = p[i];
}
sort(pos.begin(),pos.end());
int mi = INF;
for(int i = 0; i <= n; i++){
int c = rec(i, n-i);
mi = min(mi, c);
}
return mi;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |