| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1309357 | avohado | Boxes with souvenirs (IOI15_boxes) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "boxes.h"
using namespace std;
#define mod 1000000007
#define maxn 200005
#define f first
#define s second
#define ll long long
#define pb(x) push_back(x)
#define mp make_pair
#define all(x) x.begin(), x.end()
#define len(v) max(0, (int)v.size())
long long delivery(int N, int k, int L, int p[]){
long long r[1+N], l[N+1];
l[0]=0;
long long ans=INT_MAX;
for(int i=0; i<min(k, N); i++){
l[i+1]=p[i];
}
for(int i=k; i<N; i++){
l[i+1]=(p[i]+l[i+1-k];
}
for(int i=N-1; i>=max(0, N-k); i--){
r[i]=L-p[i];
}
r[N]=0;
for(int i=N-k-1; i>=0; i--){
r[i]=L-p[i]+r[i+k];
}
for(int i=0; i<=N; i++){
ans=min(ans, l[i]+r[i]);
}
if(k>=N){
return min(ans*2, 1ll*L);
}else{
ans*=2;
for(int i=0; i+k<=N; i++){
ans=min(ans, (l[i]+r[i+k])*2+L);
}
return ans;
}
}
