Submission #65206

#TimeUsernameProblemLanguageResultExecution timeMemory
65206daniel_02Boxes with souvenirs (IOI15_boxes)C++17
50 / 100
2060 ms4284 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; long long delivery(int N, int K, int L, int p[]) { long long ans = 0; if (K == 1) { for (int i = 0; i < N; i++) { if (p[i] <= L / 2) { ans += (p[i] * 2LL); } else { ans += ((L - p[i]) * 2LL); } } } else if (K == N) { bool l = 0, r = 0; for (int i = 0; i < N; i++) { if (p[i] <= L / 2) { l = 1; } else { r = 1; } } if (l == 1 && r == 0) { return (p[N - 1] * 2); } else if (r == 1 && l == 0) { return ((L - p[0]) * 2); } ans = L; long long cur = 0; for (int i = 0; i < N; i++) { if (p[i] > L / 2) { cur += (p[i - 1] * 2); break; } } for (int i = N - 1; i >= 0; i--) { if (p[i] <= L / 2) { cur += ((L - p[i + 1]) * 2); break; } } ans = min(ans, cur); } else { ans = 1LL * 1e18 + 7; for (int i = 0; i < N; i++) { long long cur = 0; for (int j = i; j >= 0; j -= K) { if (p[j] <= L / 2) cur += (p[j] * 2); else { if (j - K + 1 >= 0) { cur += min((L - p[j - K + 1]) * 2, L); } else { if (p[0] > L / 2) cur += min((L - p[0]) * 2, L); else cur += L; } } } for (int j = i + 1; j < N; j += K) { if (p[j] > L / 2) { cur += ((L - p[j]) * 2); } else { if (j + K - 1 < N) { cur += min(p[j + K - 1] * 2, L); } else { if (p[N - 1] <= L / 2) cur += min(p[N - 1] * 2, L); else cur += L; } } } ans = min(ans, cur); } } 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...