This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
long long delivery(int N, int K, int L, int p[]) {
ll n = N, k=K, l=L;
vector<ll> dp(n+1,0);
multiset<ll> pset;
multiset<ll> dpset;
for (ll i = 1; i<=n; i++){
/*ll minval = -1;
for (ll j = max((i-k+1),0LL); j<=i; j++){
//from j to i inclusive.
ll val = min((l-p[j])*2LL,min(l,p[i]*2LL));
if (j>0){
val+=dp[j-1];
}
if (minval==-1||minval>val){
minval=val;
}
}*/
pset.insert((l-p[i-1])*2+dp[i-1]);
dpset.insert(dp[i-1]);
//cout<<"pset ";for (ll it : pset){cout<<it<<" ";}cout<<endl;
//cout<<"dpset ";for (ll it : dpset){cout<<it<<" ";}cout<<endl;
ll a = (*pset.begin());
ll b = (*dpset.begin())+l;
ll c = (*dpset.begin())+p[i-1]*2;
dp[i]=min(min(a,b),c);
//cout<<dp[i]<<endl;
if (i-k>=0){
ll prem=(l-p[i-k])*2;
prem+=dp[i-k];
ll dprem=dp[i-k];
dpset.erase(dpset.find(dprem));
pset.erase(pset.find(prem));
}
}
return dp[n];
}
| # | 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... |