이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
long long dple[10000005],dpri[10000005];
vector<int> a;
long long delivery(int N, int K, int L, int p[])
{
a.push_back(0);
for(int i=0;i<N;i++)
if(p[i]!=0)
a.push_back(p[i]);
N = (int)a.size()-1;
a.push_back(L);
K = min(K, N);
if(N==0)
{
return 0;
}
for(int r=0;r<K;r++)
{
dple[r] = a[r]*2;
for(int i=r+K;i<=N;i+=K)
dple[i] = dple[i-K] + a[i]*2;
}
for(int r=0;r<K;r++)
{
dpri[r] = (L-a[N-r+1])*2;
for(int i=r+K;i<=N;i+=K)
dpri[i] = dpri[i-K] + (L-a[N-i+1])*2;
}
long long rez=INF;
for(int cntle=0;cntle<=N;cntle++)
{
if(a[cntle] >= (L+1)/2 || a[min(N+1,cntle+K)] < (L+1)/2)
continue;
for(int cntc=0;cntle+cntc*K<=N;cntc++)
{
int cntri = N - cntle - cntc*K;
rez = min(rez, dple[cntle] + dpri[cntri] + 1LL*L*cntc);
}
}
return rez;
}
/*
3 2 8
1 2 5
output: 10
*/
# | 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... |