Submission #54595

#TimeUsernameProblemLanguageResultExecution timeMemory
54595aome선물상자 (IOI15_boxes)C++17
10 / 100
2 ms380 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; const int M = 10000005; const long long INF = 1e18; long long f1[M], f2[M], f3[M]; long long delivery(int N, int K, int L, int p[]) { int pos = -1; for (int i = 0; i < N; ++i) { if (p[i] * 2 <= L) pos = i; } int cnt; long long sum; cnt = 0, sum = 0; for (int i = 0; i <= pos; ++i) { ++cnt; if (pos - i + 1 > K) { if (cnt == K) sum += p[i] * 2, cnt = 0; } else { f1[pos - i] = sum + p[i] * 2; } } cnt = 0, sum = 0; for (int i = N - 1; i > pos; --i) { ++cnt; if (i - pos > K) { if (cnt == K) sum += (L - p[i]) * 2, cnt = 0; } else { f2[i - pos - 1] = sum + (L - p[i]) * 2; } } f3[0] = f1[0]; for (int i = 1; i < K; ++i) { f3[i] = min(f3[i - 1], f1[i]); } long long res = INF; res = min(res, f3[0] + f2[0]); for (int i = 0; i < K; ++i) { res = min(res, f3[K - i] + f2[i] + L); } return res; }
#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...