# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1151406 | AlgorithmWarrior | Boxes with souvenirs (IOI15_boxes) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
void minself(long long& x,long long val){
if(x>val)
x=val;
}
long long delivery(int N,int K,int L,vector<int>positions){
vector<long long>dp1(N),dp2(N);
int i;
for(i=0;i<N;++i)
dp1[i]=2LL*positions[i]+((i>=K)?dp1[i-K]:0);
reverse(positions.begin(),positions.end());
for(i=0;i<N;++i){
positions[i]=L-positions[i];
dp2[i]=2LL*positions[i]+((i>=K)?dp2[i-K]:0);
}
long long ans=min(dp1[N-1],dp2[N-1]);
for(i=0;i<N-1;++i)
minself(ans,dp1[i]+dp2[N-2-i]);
return ans;
}