Submission #1185808

#TimeUsernameProblemLanguageResultExecution timeMemory
1185808WarinchaiBoxes with souvenirs (IOI15_boxes)C++20
10 / 100
0 ms328 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";
    long long prv=0;
    long long go=0;
    for(int i=0;i<=N+1;i++)l[i]=r[i]=0;
    long long cnt=0;
    for(int i=1;i<=N;i++){
        if(p[i-1]==0){
            l[i]=l[i-1];
            continue;
        }
        cnt++;
        if(cnt%K==1){
            prv=l[i-1];
            go=0;
        }
        go=p[i-1];
        l[i]=prv+go*2;
        //cerr<<l[i]<<" ";
    }
    //cerr<<"\n";
    cnt=0;
    for(int i=N;i>=1;i--){
        if(p[i-1]==0){
            r[i]=r[i+1];
            continue;
        }
        cnt++;
        if(cnt%K==1){
            prv=r[i+1];
            go=0;
        }
        go=L-p[i-1];
        r[i]=prv+go*2;
        //cerr<<r[i]<<" ";
    }
    //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...