Submission #1185809

#TimeUsernameProblemLanguageResultExecution timeMemory
1185809WarinchaiBoxes with souvenirs (IOI15_boxes)C++20
100 / 100
344 ms196380 KiB
#include "boxes.h"
#include<bits/stdc++.h>
using namespace std;
long long l[10000005];
long long r[10000005];
long long delivery(int N, int K, int L, int p[]) {
    //cerr<<"work\n";
    for(int i=0;i<=N+1;i++)l[i]=r[i]=0;
    for(int i=1;i<=N;i++){
        int prv=max(0,i-K);
        l[i]=l[prv]+p[i-1]*2;
        //cerr<<l[i]<<" ";
    }
    //cerr<<"\n";
    for(int i=N;i>=1;i--){
        int prv=min(N+1,i+K);
        r[i]=r[prv]+(L-p[i-1])*2;
        //cerr<<r[i]<<" ";
    }
    //cerr<<"\n";
    //cerr<<"\n";
    long long ans=LLONG_MAX;
    for(int i=0;i<=N;i++){
        ans=min(ans,l[i]+r[i+1]);
        ///cerr<<i<<" "<<l[i]<<" "<<r[i+1]<<"\n";
    }
    for(int i=0;i+K<=N;i++){
        //cerr<<i<<" "<<l[i]+L+r[i+K+1]<<"\n";
        ans=min(ans,l[i]+L+r[i+K+1]);
    }
    //cerr<<"work\n";
    return ans;
}
#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...