This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// pragmas
#ifndef DEBUG
#endif
#include <bits/stdc++.h>
#include "boxes.h"
// #define int long long
using ll = long long;
using namespace std;
long long delivery(int N, int K, int L, int p[]) {
set<int> used;
// map<int, vector<int>> locs;
map<int, int> loc_cnt;
for (int i=0; i<N; i++) {
// locs[p[i]].push_back(i);
loc_cnt[p[i]]++;
used.insert(p[i]);
}
int res = 0;
int last = 0;
int cur = 0;
int i;
for (auto idx : used) {
i = idx;
while (loc_cnt[i] > 0) {
if (last==-1) last=i;
if (cur + loc_cnt[i] >= K) {
// cerr << min(i, N-i) << "-\n";
loc_cnt[i] -= K-cur;
res += i-last + min(i, L-i) + min(last, L-last);
last = -1;
cur = 0;
} else {
cur += loc_cnt[i];
loc_cnt[i] = 0;
}
}
// cerr << res << "\n";
}
if (cur > 0) {
// cerr << i-last << "-\n";
res += i-last + min(i, L-i) + min(last, L-last);
last = i;
cur = 0;
}
return res;
}
# | 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... |