Submission #63617

#TimeUsernameProblemLanguageResultExecution timeMemory
63617MKopchevBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
535 ms196148 KiB
#include<bits/stdc++.h>
using namespace std;
const int nmax=1e7+42;
long long l[nmax],r[nmax];
long long delivery(int N, int K, int L, int positions[])
{
    l[0]=0;
    for(int i=1;i<=K;i++)
        l[i]=positions[i-1]+min(positions[i-1],L-positions[i-1]);
    for(int i=K+1;i<=N;i++)
        l[i]=l[i-K]+positions[i-1]+min(positions[i-1],L-positions[i-1]);
    r[N+1]=0;
    for(int i=N;i>=1;i--)
        r[i]=r[min(i+K,N+1)]+L-positions[i-1]+min(positions[i-1],L-positions[i-1]);
    /*
    for(int i=0;i<=N+1;i++)cout<<l[i]<<" ";cout<<endl;
    for(int i=0;i<=N+1;i++)cout<<r[i]<<" ";cout<<endl;
    */
    long long outp=1e18;
    for(int i=0;i<=N;i++)
        outp=min(outp,l[i]+r[i+1]);
    return outp;
}
/*
int N=3,K=2,L=8;
int arr[3]={1,2,5};
int main()
{
cout<<delivery(N,K,L,arr)<<endl;
}
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...