Submission #999950

#TimeUsernameProblemLanguageResultExecution timeMemory
999950coolboy19521Boxes with souvenirs (IOI15_boxes)C++17
10 / 100
1 ms6608 KiB
#include "bits/stdc++.h"
#include "boxes.h"

#define intt long long

using namespace std;

const int sz = 1e7 + 7;

intt pr[sz], su[sz], fo[sz], ba[sz];

long long delivery(int N, int K, int L, int p[]) {
    for (intt i = 0; i < N; i ++) {
        pr[i] = min(L, p[i] * 2);
    }

    for (intt i = 0; i < N; i ++) {
        su[i] = min(L, (L - p[i]) * 2);
    }

    // for (int i = 0; i < N; i ++) {
    //     cout << pr[i] << ' ';
    // }

    // cout << '\n';

    // for (int i = 0; i < N; i ++) {
    //     cout << su[i] << ' ';
    // }

    // cout << '\n';

    for (intt i = 0; i < N; i ++) {
        fo[i] = pr[i];
        if (i >= K) {
            fo[i] += fo[i - K];
        }
        // cout << fo[i] << ' ';
    }

    // cout << '\n';

    for (intt i = N - 1; -1 < i; i --) {
        ba[i] = su[i];
        if (i + K < N) {
            ba[i] += su[i + K];
        }

        // cout << ba[i] << ' ';
    }

    // cout << '\n';

    // int mn = min(fo[N - 1], ba[0]);
    intt mn = ba[0];

    for (int i = 0; i < N; i ++) {
        mn = min(mn, fo[i] + ba[i + 1]);
    }

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