Submission #1242600

#TimeUsernameProblemLanguageResultExecution timeMemory
1242600BlockOGBoxes with souvenirs (IOI15_boxes)C++20
100 / 100
278 ms117856 KiB
#include <bits/stdc++.h> // mrrrow meeow :3 // go play vivid/stasis now! it's free on steam #define fo(i, a, b) for (auto i = (a); i < (b); i++) #define of(i, a, b) for (auto i = (b); i-- > (a);) #define f first #define s second #define pb push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define be(a) a.begin(), a.end() using namespace std; int ____init = [] { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); return 0; }(); long long dp[10000000]; long long delivery(int n, int k, int l, int positions[]) { int halfl = l / 2; int halfr = (l + 1) / 2; fo(i, 1, k) dp[i] = positions[i - 1] * 2; long long res = 100000000000000; fo(i, 0, n) { if (positions[i] <= halfl) { if (positions[min(i + k - 1, n - 1)] >= halfr) { if (i + k >= n) res = min(res, dp[i] + l); else dp[i + k] = dp[i] + l; } else { if (i + k >= n) res = min(res, dp[i] + positions[min(i + k - 1, n - 1)] * 2); else dp[i + k] = dp[i] + positions[i + k - 1] * 2; } } else { if (i + k >= n) res = min(res, dp[i] + (l - positions[i]) * 2); else dp[i + k] = dp[i] + (l - positions[i]) * 2; } } 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...