Submission #1178507

#TimeUsernameProblemLanguageResultExecution timeMemory
1178507sleepntsheepBoxes with souvenirs (IOI15_boxes)C11
0 / 100
0 ms328 KiB
#include "boxes.h"
#include <stdio.h>

long long delivery(int N, int K, int L, int p2[]) {
    int*p=p2;
    while(p-p2<N&&*p==0)++p;
    N-=p-p2;

    if(K>N)K=N;
    static long long z,l[10000000],r[10000000];
    z=1e18;

    for(int i=0;i<N;++i){
        if(i<K)l[i]=p[i]*2;
        else l[i]=l[i-K]+p[i]*2;
    }
    for(int i=N-1;i>=0;--i){
        if(i+K>=N)r[i]=(p[i]?L-p[i]:0)*2;
        else r[i]=r[i+K]+(p[i]?L-p[i]:0)*2;
    }

    for(int i=0;i+1<N;++i)if(l[i]+r[i+1]<z)z=l[i]+r[i+1];
    for(int i=1;i<N;++i)if(r[i]+l[i-K-1]<z)z=r[i]+l[i-K-1]+L;
    if(L+(K<N?r[K]:0)<z)z=L+(K<N?r[K]:0);
    if(K<N&&L+l[N-K-1]<z)z=L+l[N-K-1];

    if(l[N-1]<z)z=l[N-1];
    if(r[0]<z)z=r[0];

    return z;
}

#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...