Submission #259825

#TimeUsernameProblemLanguageResultExecution timeMemory
259825HeheheBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
621 ms235512 KiB
#include<bits/stdc++.h> //:3 using namespace std; typedef long long ll; #define all(a) (a).begin(), (a).end() #define ff first #define ss second #define pb push_back #define mp make_pair #define pi pair<int, int> #define sz(x) (int)((x).size()) #include "boxes.h" ll delivery(int n, int k, int L, int pos[]){ ll dp1[n + 5], dp2[n + 5]; vector<int>pos2; for(int i = 0; i < n; i++){ pos2.push_back(pos[i]); } reverse(all(pos2)); for(int i = 0; i < n; i++){ dp1[i] = (i < k ? 2ll*pos[i] : dp1[i - k] + 2ll*pos[i]); } for(int i = n - 1; i >= 0; i--){ dp2[i] = (i + k >= n ? 2ll*(L - pos[i]) : dp2[i + k] + 2ll*(L - pos[i])); } ll ans = min(dp2[0], dp1[n - 1]); for(int i = 0; i < n - 1; i++){ ans = min(ans, dp1[i] + dp2[i + 1]); } if(n <= k){ ans = min(ans, L*1ll); return ans; } ans = min(ans, L*1ll + min(dp2[k], dp1[n - k - 1])); for(int i = 0; i < n; i++){ if(i + k + 1 >= n)continue; ans = min(ans, dp1[i] + L + dp2[i + k + 1]); } 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...