Submission #1162207

#TimeUsernameProblemLanguageResultExecution timeMemory
1162207gustavo_dBoxes with souvenirs (IOI15_boxes)C++20
0 / 100
1 ms328 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 1e18; ll delivery(int n, int k, int len, int p[]) { ll ans = INF; ll dpL[n+1]; dpL[0] = 0; ll dpR[n+1]; dpR[0] = 0; for (int i=0; i<=n; i++) { if (i != 0 and i <= k) dpL[i] = 2*p[i-1]; else if (i != 0) dpL[i] = 2*p[i-1] + dpL[i-k]; } for (int j=0; j<=n; j++) { if (j != 0 and j <= k) dpR[j] = 2*(len - p[n-j]); else if (j != 0) dpR[j] = 2LL*(len-p[n-j]) + dpR[j-k]; } int pt = 0; for (int i=0; i<n; i++) { if (p[i] <= len / 2) pt = i; else break; } for (int i=max(0, pt - k - 5); i<=min(n, pt); i++) { for (int j=max(0, n-pt-k-5); j<=min(n-i, n-pt-1); j++) { ll tmp = (ll)((n - i - j + k - 1) / k) * (ll)len; tmp += dpL[i] + dpR[j]; // cout << i << ' ' << j << ' ' << tmp << endl; ans = min(ans, tmp); } // cout << endl << endl; } 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...