Submission #1216968

#TimeUsernameProblemLanguageResultExecution timeMemory
1216968takoshanavaBoxes with souvenirs (IOI15_boxes)C++20
10 / 100
0 ms328 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; long long get(int x, int L){ return (L - x) % L; } long long delivery(int N, int K, int L, int pos[]) { auto dist = [&](int x){ return (x + L) % L; }; sort(pos, pos + N, [&](int a, int b){ return dist(a) < dist(b); }); vector<long long> lcw(N+1, 0); for (int i = 1; i <= N; ++i) { long long d = dist(pos[i-1]); if (i <= K) { lcw[i] = 2*d; } else { lcw[i] = lcw[i - K] + 2*d; } } vector<long long> rccw(N+1, 0); for (int i = 1; i <= N; ++i) { long long d = get(pos[N - i], L); if (i <= K) { rccw[i] = 2*d; } else { rccw[i] = rccw[i - K] + 2*d; } } long long ans = LLONG_MAX; for (int s = 0; s <= N; ++s) { ans = min(ans, lcw[s] + rccw[N - s]); } int M = min(K, N); for (int t = 0; t + M <= N; ++t) { ans = min(ans, lcw[t] + (long long)L + rccw[N - (t + M)]); } return ans; }
#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...