This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/**
____ ____ ____ ____ ____
||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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |