Submission #712519

#TimeUsernameProblemLanguageResultExecution timeMemory
712519Username4132Boxes with souvenirs (IOI15_boxes)C++14
10 / 100
1 ms340 KiB
#include "boxes.h"
#include<iostream>
using namespace std;
using ll = long long;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
 
const int MAXN=10000010;
int le[MAXN], ri[MAXN], cnl=0, cnr=0;
ll dpl[MAXN], dpr[MAXN];
 
long long delivery(int N, int K, int L, int p[]) {
 
    forn(i, N){
        if(p[i]<=(L>>1)) le[cnl++]=p[i];
        else ri[cnr++]=L-p[i];
    }
 
    forn(i, cnl){
        if(i<K) dpl[i]=le[i];
        else dpl[i]=dpl[i-K]+le[i];
    }
    forn(i, cnr){
        if(i<K) dpr[i]=ri[i];
        else dpr[i]=dpr[i-K]+ri[i];
    }
 
    ll ans = (dpl[cnl-1]+dpr[cnr-1])<<1;
    forn(i, K+1){
        int il=cnl-1-i, ir=cnr-1-K+i;
        if(il>=0 && ir>=0) ans = min(ans, ((dpl[il] + dpr[ir])<<1) + L);
    }
 
    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...