Submission #1232549

#TimeUsernameProblemLanguageResultExecution timeMemory
123254912baaterBoxes with souvenirs (IOI15_boxes)C++20
0 / 100
0 ms328 KiB
#include "boxes.h"
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

typedef long long ll;

ll delivery(int N, int K, int L, int p[]) {
    vector<ll> l(N+1);
    vector<ll> r(N+1);
    l[0] = 0;
    r[N] = 0;
    for (int i = 0; i <= N; i++) {
        if (i == 0) {
            l[i] = 0;
        } else if (i <= K) {
            l[i] = 2*p[i-1];
        } else {
            l[i] = 2*p[i-1] + l[i-K];
        }
    }

    for (int i = N; i >= 0; i--) {
        if (i == N) {
            r[i] = 0;
        } else if (N-i <= K) {
            r[i] = 2*(L - p[i]);
        } else {
            r[i] = 2*(L - p[i]) + r[i+K];
        }
    }
    // for (auto num : l) {
    //     cout << num << " ";
    // }
    // cout << endl;
    // for (auto num : r) {
    //     cout << num << " ";
    // }
    // cout << endl;
    // for (int i = 0; i <= N; i++) {
    //     best = min(best, l[i]+r[i]);
    // }


    ll best = r[0];

    if (K >= N) {
        return min(static_cast<ll>(L), best);
    }

    for (int i = K; i <= N; i++) {
        best = min(best, l[i-K] + r[i] + L);
    }

    return best;
}
#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...