Submission #996383

#TimeUsernameProblemLanguageResultExecution timeMemory
996383AlfraganusBoxes with souvenirs (IOI15_boxes)C++17
0 / 100
2 ms452 KiB
#include <bits/stdc++.h> #include "boxes.h" using namespace std; #define ll long long ll delivery(int n, int k, int l, int p[]) { ll ans = 1e18; auto get = [&](ll x){return min(x, l - x);}; vector<int> q; for(int i = 0; i < n; i ++) if(p[i] != 0) q.push_back(p[i]); n = (int)q.size(); for(int i = 0; i < (1 << n); i ++){ // cout << i << endl; ll mx = 0; deque<int> dq; for(int j = 0; j < n; j ++){ if(i & (1 << j)){ dq.push_back(q[j]); } } // for(auto x : dq) // cout << x << ' '; // cout << endl; while(dq.size() > 0){ int sz = (int)dq.size(); ll clock = dq[min(sz - 1, k - 1)] + get(dq[min(sz - 1, k - 1)]); mx += clock; for(int j = 0; j < min(sz, k); j ++) dq.pop_front(); } for(int j = 0; j < n; j ++){ if((i & (1 << j)) == 0){ dq.push_back(q[j]); } } // for(auto x : dq) // cout << x << ' '; // cout << endl; while(dq.size() > 0){ int sz = (int)dq.size(); ll clock = l - dq[max(0, sz - k)] + get(dq[max(0, sz - k)]); mx += clock; for(int j = 0; j < min(sz, k); j ++) dq.pop_back(); } // cout << mx << endl; ans = min(ans, mx); } return ans; for(int i = 0; i <= n; i ++){ deque<int> dq; for(int j = 0; j < i; j ++) dq.push_back(q[j]); // for(auto x : dq) // cout << x << ' '; // cout << endl; ll mx = 0; while(dq.size() > 0){ int sz = (int)dq.size(); ll clock = dq[min(sz - 1, k - 1)] + get(dq[min(sz - 1, k - 1)]); mx += clock; for(int j = 0; j < min(sz, k); j ++) dq.pop_front(); } for(int j = i; j < n; j ++) dq.push_back(q[j]); // for(auto x : dq) // cout << x << ' '; // cout << endl; while(dq.size() > 0){ int sz = (int)dq.size(); ll counterclock = l - dq[max(0, sz - k)] + get(dq[max(0, sz - k)]); mx += counterclock; for(int j = 0; j < min(sz, k); j ++) dq.pop_back(); } // cout << i << ' ' << mx << endl; ans = min(ans, mx); } 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...