Submission #1076395

#TimeUsernameProblemLanguageResultExecution timeMemory
1076395juicy선물상자 (IOI15_boxes)C++17
10 / 100
1 ms440 KiB
#include "boxes.h"

#include <bits/stdc++.h>

long long delivery(int N, int K, int L, int *p) {
    std::vector<long long> pf(N + 3), sf(N + 3);
    for (int i = N; i; --i) {
        sf[i] = sf[std::min(N + 1, i + K)] + 2 * (L - p[i - 1]);
    }
    std::deque<int> dq;
    dq.push_back(0);
    auto res = sf[1];
    for (int i = 1; i <= N; ++i) {
        pf[i] = pf[std::max(0, i - K)] + 2 * p[i - 1];
        res = std::min(res, std::min(pf[i], pf[dq.front()] + 2 * L) + sf[i + 1]);
        if (dq.front() == i - K) {
            dq.pop_front();
        }
        while (dq.size() && pf[dq.back()] >= pf[i]) {
            dq.pop_back();
        }
        dq.push_back(i);
    }
    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...