Submission #434923

#TimeUsernameProblemLanguageResultExecution timeMemory
434923alextodoran선물상자 (IOI15_boxes)C++17
20 / 100
1 ms204 KiB
/**
 ____ ____ ____ ____ ____
||a |||t |||o |||d |||o ||
||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|

**/

#include <bits/stdc++.h>
#include "boxes.h"

using namespace std;

typedef long long ll;

ll delivery (int n, int k, int len, int pos[])
{
    function <int (int, int)> getDist = [&] (int u, int v)
    {
        return min(abs(u - v), len - abs(u - v));
    };
    int dist[n];
    for(int i = 0; i < n; i++)
        dist[i] = getDist(0, pos[i]);

    int order[n];
    for(int i = 0; i < n; i++)
        order[i] = i;
    sort(order, order + n, [&] (const int &u, const int &v)
    {
        return dist[u] < dist[v];
    });

    ll total = 0;
    for(int i = n - 1; i >= 0; i -= k)
    {
        int cnt = min(k, i + 1);

        int aux[cnt];
        for(int j = 0; j < cnt; j++)
            aux[j] = pos[i - j];
        sort(aux, aux + cnt);

        ll minTime = len;
        for(int j = 1; j < cnt; j++)
            minTime = min(minTime, (len - (aux[j] - aux[j - 1])) * 2LL);
        minTime = min(minTime, (len - aux[0]) * 2LL);
        minTime = min(minTime, (len - (len - aux[cnt - 1])) * 2LL);
        total += minTime;
    }
    return total;
}
#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...