Submission #1009838

#TimeUsernameProblemLanguageResultExecution timeMemory
1009838ProtonDecay314Boxes with souvenirs (IOI15_boxes)C++17
100 / 100
721 ms372024 KiB
/* 0 1l 2l 3l 4 1r 2r 3r 0 1l 2l = 1 3l = 2 4 = ? 1r 2r = 1 3r = 2 [3r, 3r, 3l] -> 8 [3l, 2l, 2r] -> 8 = 16 [3r, 3r, 2r] -> 6 [3l, 3l, 2l] -> 6 1l, 2l, 3r 3l 3r 2r 2l 2l [3l, 3r], [2l, 2l], [2r, 0l] 8 + 4 + 4 = 12 [3r, 2r], [3l, 2l], [2l, 0l] 6 + 6 + 4 = 16 10 2 10 4 3 0 1 1 2 0 5 1 6 1 1 1 2 3 4 5 6 10 7 10 7 8 1 4 3 8 7 0 4 6 4 3 10 4 9 2 9 2 4 9 9 FAILING TEST CASE: 5 3 10 2 5 8 4 3 2 3 4 5 8 2 3 4 5 8 ??? Does this fail? 10 7 10 7 8 1 4 3 8 7 0 4 6 0 1 3 4 6 7 7 8 8 */ #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vll; typedef vector<vll> vvll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pi; typedef pair<ll, ll> pll; typedef vector<pi> vpi; typedef vector<pll> vpll; #define first fi; #define second se; ll delivery(int intn, int intk, int intl, int pos_int[]) { ll n = intn, k = intk, l = intl; vll pos(n, 0ll); for(ll i = 0; i < n; i++) { pos[i] = pos_int[i]; } sort(pos.begin(), pos.end()); vll pref(n + 1, 0ll); vll suff(n + 1, 0ll); for(ll i = 1ll; i < n + 1; i++) { pref[i] = (i >= k ? pref[i - k] : 0ll) + pos[i - 1]; } for(ll i = n - 1; i >= 0ll; i--) { suff[i] = (i + k <= n ? suff[i + k] : 0ll) + l - pos[i]; } ll ans = numeric_limits<ll>::max(); for(ll i = 0; i <= n; i++) { ans = min(ans, (pref[i] + suff[i]) << 1ll); if(i + k <= n) ans = min(ans, ((pref[i] + suff[i + k]) << 1ll) + l); } return ans; } #ifdef DEBUG int main() { cin.tie(nullptr); cout.tie(nullptr); ios_base::sync_with_stdio(false); int n, k, l; cin >> n >> k >> l; vi positions(n, 0); for(int& pos : positions) { cin >> pos; } cout << delivery(n, k, l, &positions[0]) << endl; } #endif
#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...