Submission #127941

#TimeUsernameProblemLanguageResultExecution timeMemory
127941Sorting선물상자 (IOI15_boxes)C++14
10 / 100
2 ms380 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e7 + 7; vector<long long> v1, v2; vector<long long> v3, v4; void output(vector<long long> v){ for(long long &x: v){ cout << x << " "; } cout << endl; } long long delivery(int n, int k, int l, int *positions){ sort(positions, positions + n); int idx = 0; for(; idx < n && positions[idx] <= l / 2; idx++){ v1.push_back(positions[idx]); } for(; idx < n; idx++){ v2.push_back(l - positions[idx]); } if(!v2.empty()){ reverse(v2.begin(), v2.end()); } //output(v1); //output(v2); long long ans = 0; for(int i = -1; true;){ if(i + k >= (int)v1.size()){ for(++i; i < (int)v1.size(); ++i){ v3.push_back(v1[i]); } break; } i += k; ans += (long long)v1[i] * 2ll; } for(int i = -1; true;){ if(i + k >= (int)v2.size()){ for(++i; i < (int)v2.size(); ++i){ v4.push_back(v2[i]); } break; } i += k; ans += (long long)v2[i] * 2ll; } //output(v3); //output(v4); if(v3.empty() || v4.empty()){ if(!v3.empty()){ ans += v3.back() * 2ll; } if(!v4.empty()){ ans += v4.back() * 2ll; } return ans; } if((int)v3.size() + (int)v4.size() <= k){ ans += l; return ans; } int j = (int)v3.size() + (int)v4.size() - k; long long ans2 = ans + 2ll * (long long)l; if((int)v3.size() >= j){ ans2 = min(ans2, v3[j - 1] * 2ll + (long long)l + ans); } if((int)v4.size() >= j){ ans2 = min(ans2, v4[j - 1] * 2ll + (long long)l + ans); } ans2 = min(ans2, ans + v3.back() * 2ll + v4.back() * 2ll); return ans2; } /*int positions[N], n, k, l; int main(){ cin >> n >> k >> l; for(int i = 0; i < n; i++){ cin >> positions[i]; } cout << delivery(n, k, l, positions) << "\n"; return 0; }*/ /* 3 2 8 1 2 5 */
#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...