Submission #238694

#TimeUsernameProblemLanguageResultExecution timeMemory
238694nicolaalexandra선물상자 (IOI15_boxes)C++14
20 / 100
5 ms384 KiB
#include <bits/stdc++.h>
#include "boxes.h"
#define DIM 10000010
using namespace std;

long long dist_left[DIM],dist_right[DIM];

long long delivery (int n, int k, int l, int v[]){
    int i, j, poz, poz2;
    long long sol = 0;

    for (i=0;i<n;i++){
        dist_left[i] = v[i];
        dist_right[i] = l - v[i];
    }

    for (i=0;i+k-1<n && dist_left[i+k-1] <= l/2;i+=k)
        sol += 2*dist_left[i+k-1];

    for (j=n-1;j-k+1>=i && dist_right[j-k+1] <= l/2;j-=k)
        sol += 2*dist_right[j-k+1];

    if (i > j)
        return sol;

    if (j-i+1 <= k){
        long long val = min (1LL*l,min(2*dist_left[j],2*dist_right[i]));
        for (poz=i;dist_left[poz]<=l/2;poz++);
        for (poz2=j;poz2>=poz;poz2--);

        long long nr = 0;
        if (poz > i)
            nr += 2*dist_left[poz-1];
        if (poz2 < j)
            nr += 2*dist_right[poz2+1];

        val = min (val,nr);

        return sol + val;
    }

    sol += l;

    long long nr = j-i+1 - k;
    sol += min (dist_left[i+nr-1],dist_right[j-nr+1]) * 2;

    return sol;

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