Submission #1169329

#TimeUsernameProblemLanguageResultExecution timeMemory
1169329LucaLucaMBoxes with souvenirs (IOI15_boxes)C++20
50 / 100
2093 ms16012 KiB
#include "boxes.h" #include <vector> #include <algorithm> #include <iostream> using ll = long long; #define debug(x) #x << " = " << x << '\n' ll delivery(int n, int k, int L, int p[]) { std::vector<std::pair<int, int>> v(n); for (int i = 0; i < n; i++) { v[i].first = std::min(p[i], L - p[i]); v[i].second = p[i]; } std::sort(v.begin(), v.end()); std::reverse(v.begin(), v.end()); std::vector<int> st, dr; for (int i = 0; i < n; i++) { if (v[i].first == v[i].second) { st.push_back(v[i].first); } else { dr.push_back(v[i].first); } } std::sort(st.begin(), st.end()); std::sort(dr.begin(), dr.end()); ll answer = 1e18; for (int catel = 0; catel <= (int) st.size(); catel++) { // dintre turele full, cate sterg din st? for (int cater = 0; cater <= (int) dr.size(); cater++) { ll cur = 0; for (int i = (int) st.size() - catel - 1; i >= 0; i -= k) { cur += st[i]; } for (int i = (int) dr.size() - cater - 1; i >= 0; i -= k) { cur += dr[i]; } cur *= 2; cur += (ll) L * ((catel + cater + k - 1) / k); answer = std::min(answer, cur); } } return answer; }
#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...