# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
345028 | pggp | Boxes with souvenirs (IOI15_boxes) | C++14 | 1 ms | 364 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.
#include <bits/stdc++.h>
using namespace std;
long long delivery(int N, int K, int L, int p[]){
vector < int > positions;
for (int i = 0; i < N; ++i)
{
positions.push_back(p[i]);
}
vector < int > l, r;
vector < long long > l_dp, r_dp;
for (int i = 0; i < N; ++i)
{
if(positions[i] > L/2){
r.push_back(positions[i]);
}
else{
l.push_back(positions[i]);
}
}
sort(r.begin(), r.end(), greater < int >());
l_dp.resize(N + 1);
r_dp.resize(N + 1);
for (int i = 0; i < l.size(); ++i)
{
if(i >= K){
l_dp[i] = l_dp[i - K] + l[i];
}
else{
l_dp[i] = l[i];
}
}
for (int i = 0; i < r.size(); ++i)
{
if(i >= K){
r_dp[i] = r_dp[i - K] + (L - r[i]);
}
else{
r_dp[i] = L - r[i];
}
}
long long ans = 2 * r_dp[r.size() - 1] + 2 * l_dp[l.size() - 1];
//cout << ans << endl;
for (int i = 1; i < K; ++i)
{
//cout << ans << endl;
ans = min(ans, 2 * l_dp[l.size() - i - 1] + 2 * r_dp[r.size() - (K - i) - 1] + L);
}
return ans;
}
Compilation message (stderr)
# | 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... |