Submission #1192570

#TimeUsernameProblemLanguageResultExecution timeMemory
1192570Joon_YorigamiBoxes with souvenirs (IOI15_boxes)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll delivery(ll n, ll k, ll l, ll* positions)
{
    vector<pair<ll,ll>> left;
    vector<pair<ll,ll>> right;
    map<ll,ll> memo;
    ll num;
    for(ll i=0;i<n;i++)
    {
        num=positions[i];
        if(memo.find(num)==memo.end())
        {
            memo[num]=1;
        }
        else
        {
            memo[num]+=1;
        }
    }
    for(auto p:memo)
    {
        if(p.first<=l/2)
        {
            left.push_back(p);
        }
        else
        {
            right.push_back(p);
        }
    }
    ll leftoverright,leftoverleft,ans;
    ans=0;
    leftoverright=0;
    leftoverleft=0;
    reverse(right.begin(),right.end());
    for(ll i=left.size()-1;i>=0;i--)
    {
        if(leftoverleft>0)
        {
            left[i].second-=leftoverleft;
            leftoverleft=0;
        }
        if(left[i].second<0)
        {
            leftoverleft=abs(left[i].second);
            continue;
        }
        ans+=(left[i].second+k-1)/k*2*left[i].first;
        leftoverleft=0;
        if(left[i].second%k>0)
        {
            leftoverleft=k-(left[i].second%k);
        }
    }
    for(ll i=right.size()-1;i>=0;i--)
    {
        if(leftoverright>0)
        {
            right[i].second-=leftoverright;
            leftoverright=0;
        }
        if(right[i].second<0)
        {
            leftoverright=abs(right[i].second);
            continue;
        }
        ans+=(right[i].second+k-1)/k*2*(l-right[i].first);
        leftoverright=0;
        if(right[i].second%k>0)
        {
            leftoverright=k-(right[i].second%k);
        }
    }
    if(right.size()>0 && left.size()>0 && leftoverleft>0 && leftoverright>0 && leftoverleft>=(k-leftoverright) && l<left.back().first*2+(l-right.back().first)*2)
    {
        ans-=left.back().first*2+(l-right.back().first)*2;
        ans+=l;
    }
    return ans;
}
/*
int main()
{
    ll n,k,l,owo;
    ll positions[10000];
    cin >> n >> k >> l;
    for(ll i=0;i<n;i++)
    {
        cin >> owo;
        positions[i]=owo;
    }
    cout << delivery(n,k,l,positions) << endl;
}
*/

Compilation message (stderr)

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