Submission #1301834

#TimeUsernameProblemLanguageResultExecution timeMemory
1301834nicolo_010Boxes with souvenirs (IOI15_boxes)C++20
15 / 100
2095 ms580 KiB
#include <bits/stdc++.h> #include "boxes.h" using namespace std; using ll = long long; using pii = pair<int, int>; const int mxN = 1005; vector<int> pos; int l, k, n; ll solve(vector<int> &p) { int idx=0; int cnt=0; ll ans=0; for (int i=0; i<n; i++) { int a = p[i]; int cost; if (idx <= pos[a]) cost = pos[a]-idx; else cost = idx+pos[a]; if (idx >= pos[a]) cost = min(cost, idx-pos[a]); else cost = min(cost, idx+l-pos[a]); //cout << i << " " << idx << " " << a << " " << pos[a] << " " << cost << endl; cnt++; ans += cost; idx = pos[a]; if (cnt==k) { cnt=0; ans += min(idx, l-idx); idx = 0; } } return ans+min(idx, l-idx); } ll delivery(int N, int K, int L, int* a) { n = N; k = K; l = L; pos.assign(n, 0); for (int i=0; i<n; i++) { pos[i] = a[i]; } ll ans=1e18; vector<int> p(n); for (int i=0; i<n; i++) p[i] = i; ans = solve(p); //cout << endl; while (next_permutation(p.begin(), p.end())) { ans = min(ans, solve(p)); } 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...