Submission #1212215

#TimeUsernameProblemLanguageResultExecution timeMemory
1212215kunzaZa183Boxes with souvenirs (IOI15_boxes)C++20
20 / 100
0 ms328 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; long long delivery(int N, int K, int L, int p[]) { vector<int> left, right; int ct = 0; for (int i = 0; i < N; i++) if (L % 2 == 0 && p[i] == L / 2) ct++; else if (p[i] <= L / 2) { left.push_back(p[i]); } else right.push_back(p[i]); // cerr << left.size() << " " << right.size() << "\n"; // cout << (left.empty() ? 0 : left.back() * 2) + // (right.empty() ? 0 : (N - right.front()) * 2) // << "\n"; // return min(L, (left.empty() ? 0 : left.back() * 2) + // (right.empty() ? 0 : (L - right.front()) * 2)); long long ans = 0; reverse(right.begin(), right.end()); while (ct > 0) { if (left.size() % K == 0) break; left.push_back(L / 2); ct--; } while (ct > 0) { if (right.size() % K == 0) break; right.push_back(L / 2); ct--; } for (int i = K - 1; i < left.size(); i += K) { ans += 2 * left[i]; } for (int i = K - 1; i < right.size(); i += K) { ans += 2 * (L - right[i]); } reverse(left.begin(), left.end()); reverse(right.begin(), right.end()); vector<int> newl, newr; for (int i = 0; i < left.size() % K; i++) newl.push_back(left[i]); for (int i = 0; i < right.size() % K; i++) newr.push_back(right[i]); reverse(newl.begin(), newl.end()); if (ct == 0) { if (newl.size() + newr.size() <= K) { return ans + min((long long)L, (newl.empty() ? 0ll : newl.back() * 2ll) + (newr.empty() ? 0ll : (L - newr.front()) * 2ll)); } else { vector<int> all; for (auto a : newl) all.push_back(a); for (auto a : newr) all.push_back(a); return ans + L + 2ll * min(all[all.size() - K - 1], (L - all[K])); } } else { return ans + (ct + K - 1ll) / K * L; } }
#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...