# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1009259 | Ausp3x | Boxes with souvenirs (IOI15_boxes) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// 人外有人,天外有天
// author: Ausp3x
#pragma GCC optimize("O1, O2, O3, Ofast, unroll-loops")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
typedef long long lng;
typedef unsigned int uint;
typedef unsigned long long ulng;
using namespace std;
using namespace __gnu_pbds;
int const INF32 = 0x3f3f3f3f;
lng const INF64 = 0x3f3f3f3f3f3f3f3f;
lng delivery(int N, int K, int L, int[] positions) {
vector<int> cw, ccw;
for (int i = 0; i < N; i++)
if (positions[i] <= L - positions[i])
cw.push_back(positions[i]);
else
ccw.push_back(L - positions[i]);
sort(cw.begin(), cw.end(), greater<int>());
sort(ccw.begin(), ccw.end(), greater<int>());
lng ans = 0;
for (int i = 0; i < cw.size(); i += K)
ans += 2 * cw[i];
for (int i = 0; i < ccw.size(); i += K)
ans += 2 * ccw[i];
for (int i = 0; i < K - 1; i++) {
lng cur = L;
for (int j = i + 1; j < cw.size(); j += K)
cur += 2 * cw[i];
for (int j = K - i - 1; j < ccw.size(); j += K)
cur += 2 * ccw[i];
ans = min(ans, cur);
}
return ans;
}
/*
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t = 1;
cin >> t;
while (t--) {
int N, K, L;
cin >> N >> K >> L;
vector<int> positions(N);
for (int &p : positions)
cin >> p;
cout << delivery(N, K, L, positions) << endl;
}
return 0;
}
//*/