Submission #1298390

#TimeUsernameProblemLanguageResultExecution timeMemory
1298390the_commando_xBoxes with souvenirs (IOI15_boxes)C++17
10 / 100
1 ms580 KiB
#include "boxes.h"

#include <bits/stdc++.h>

long long delivery(int N, int K, int L, int p[])
{
    long long ans;

    K = std::min(K, N);

    std::vector<long long> dist1, dist2;

    dist1.push_back(0), dist2.push_back(0);
    dist1.reserve(N / 2), dist2.reserve(N / 2);

    for (int i = 0; i < N; ++i)
        if (p[i] <= L / 2)
            dist1.push_back(p[i]);
        else
            dist2.push_back(L - p[i]);

    sort(dist1.begin(), dist1.end()), sort(dist2.begin(), dist2.end());

    int a = (int)dist1.size(), b = (int)dist2.size();

    std::vector<long long> pref1(a, 0), pref2(b, 0);

    for (int i = 1; i < a; ++i)
        pref1[i] = dist1[i] + ((i >= K) ? pref1[i - K] : 0);

    for (int i = 1; i < b; ++i)
        pref2[i] = dist2[i] + ((i >= K) ? pref2[i - K] : 0);

    ans = 2 * (pref1[a - 1] + pref2[b - 1]);
    return ans;
}
#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...