Submission #1191657

#TimeUsernameProblemLanguageResultExecution timeMemory
1191657gelovBoxes with souvenirs (IOI15_boxes)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long int;

ll numCheckpoints, stepSize, trackLength;
vector<ll> forwardDistances, backwardDistances;
vector<ll> memoForward, memoBackward;

ll computeForwardTime(ll idx) {
    if (idx < 0) return 0;
    if (memoForward[idx] != -1) return memoForward[idx];
    return memoForward[idx] = 2LL * forwardDistances[idx] + computeForwardTime(idx - stepSize);
}

ll computeBackwardTime(ll idx) {
    if (idx < 0) return 0;
    if (memoBackward[idx] != -1) return memoBackward[idx];
    return memoBackward[idx] = 2LL * backwardDistances[idx] + computeBackwardTime(idx - stepSize);
}

ll delivery(ll numCheckpoints, ll stepSize, ll trackLength) {
    for (ll i = 0; i < numCheckpoints; i++) {
        ll pos;
        cin >> pos;
        if (pos == 0 || pos == trackLength) continue;
        if (2 * pos > trackLength)
            backwardDistances.push_back(trackLength - pos);
        else
            forwardDistances.push_back(pos);
    }

    sort(forwardDistances.begin(), forwardDistances.end());
    sort(backwardDistances.begin(), backwardDistances.end());

    memoForward.assign(forwardDistances.size(), -1);
    memoBackward.assign(backwardDistances.size(), -1);

    ll fCount = forwardDistances.size();
    ll bCount = backwardDistances.size();

    ll result = computeForwardTime(fCount - 1) + computeBackwardTime(bCount - 1);

    for (ll i = 0; i <= stepSize; ++i) {
        ll skipF = fCount - 1 - i;
        ll skipB = bCount - 1 - (stepSize - i);
        ll timeF = computeForwardTime(skipF);
        ll timeB = computeBackwardTime(skipB);
        result = min(result, timeF + timeB + trackLength);
    }

    return result;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cc0pbRMv.o: in function `main':
grader.c:(.text.startup+0x1ec): undefined reference to `delivery(int, int, int, int*)'
collect2: error: ld returned 1 exit status