Submission #993785

#TimeUsernameProblemLanguageResultExecution timeMemory
993785phoenixBoxes with souvenirs (IOI15_boxes)C++17
0 / 100
1 ms348 KiB
#include "boxes.h"
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int N = 10000010;

ll pre[N];
ll suf[N];

ll delivery(int n, int k, int L, int p[]) {
    ll res = 1e18;
    for (int i = 0; i < n; i++) {
        pre[i] = (2 * p[i]);    
        if (i >= k) 
            pre[i] += pre[i - k];
    }    
    for (int i = n - 1; i >= 0; i--) {
        suf[i] = (2 * (L - p[i]));
        if (i < n - k) 
            suf[i] += suf[i + k];
    }
    auto value = [&](int l, int r) -> long long {
        ll val = 0;
        if (l >= 0) 
            val += pre[l];
        if (r < n) 
            val += suf[r];
        val += 1ll * ((r - l - 1) + k - 1) / k * L;
        return val; 
    };
    int r = 0;
    for (int l = -1; l < n; l++) {
        while (r < n && 2 * (p[r] - p[l]) < L)
            r++;
        res = min(res, value(l, r));
    }
    return res;
}
#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...