제출 #1178510

#제출 시각아이디문제언어결과실행 시간메모리
1178510sleepntsheep선물상자 (IOI15_boxes)C11
100 / 100
341 ms196160 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]=(L-p[i])*2;
        else r[i]=r[i+K]+(L-p[i])*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=K+1;i<N;++i)if(r[i]+l[i-K-1]+L<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...