Submission #23836

#TimeUsernameProblemLanguageResultExecution timeMemory
23836NirjhorBoxes with souvenirs (IOI15_boxes)C++14
0 / 100
2 ms508 KiB
#include <bits/stdc++.h> #include "boxes.h" using namespace std; vector <long long> costLeft; vector <long long> costRight; long long delivery (int N, int K, int L, int p[]) { int mid = L >> 1; for (int i = 0; i < N; ++i) { if (p[i] > mid) { costRight.push_back(2LL * (L - p[i])); } else { costLeft.push_back(2LL * p[i]); } } reverse(costRight.begin(), costRight.end()); int sizeLeft = (int) costLeft.size(); int sizeRight = (int) costRight.size(); for (int i = K; i < sizeLeft; ++i) { costLeft[i] += costLeft[i - K]; } for (int i = K; i < sizeRight; ++i) { costRight[i] += costRight[i - K]; } long long ret = costLeft[sizeLeft - 1] + costRight[sizeRight - 1]; for (int i = 0; i <= K; ++i) { int left = i, right = K - i; long long leftCost = left >= sizeLeft ? 0 : costLeft[sizeLeft - 1 - left]; long long rightCost = right >= sizeRight ? 0 : costRight[sizeRight - 1 - right]; ret = min(ret, L + leftCost + rightCost); } return ret; }
#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...