Submission #1192692

#TimeUsernameProblemLanguageResultExecution timeMemory
1192692Joon_YorigamiBoxes with souvenirs (IOI15_boxes)C++20
100 / 100
616 ms274588 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll delivery(int n, int k, int l, int* positions)
{
    vector<ll> pos;
    for(int i=0;i<n;i++)
    {
        pos.push_back(positions[i]);
    }
    sort(pos.begin(),pos.end());
    vector<ll> dpleft(n+1,0);
    vector<ll> dpright(n+1,0);
    ll j;
    for(int i=0;i<n;i++)
    {
        dpleft[i+1]=dpleft[max(0,i-k+1)]+pos[i]*2;
    }
    for(int i=0;i<n;i++)
    {
        dpright[n-i-1]=dpright[min(n,n-i-1+k)]+(l-pos[n-i-1])*2;
    }
    ll ans_no_full_trip;
    ans_no_full_trip=LONG_LONG_MAX;
    for(int i=0;i<=n;i++)
    {
        ans_no_full_trip=min(ans_no_full_trip,dpleft[i]+dpright[i]);
    }
    ll ans_one_full_trip;
    ans_one_full_trip=LONG_LONG_MAX;
    for(int i=0;i<=n-k;i++)
    {
        ans_one_full_trip=min(ans_one_full_trip,dpleft[i]+dpright[i+k]+l);
    }
    return min(ans_no_full_trip,ans_one_full_trip);
}
/*
int main()
{
    int n,k,l,owo;
    int positions[100000];
    cin >> n >> k >> l;
    for(ll i=0;i<n;i++)
    {
        cin >> owo;
        positions[i]=owo;
    }
    cout << delivery(n,k,l,positions) << endl;
}
*/
#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...