Submission #1074054

#TimeUsernameProblemLanguageResultExecution timeMemory
1074054jk_Boxes with souvenirs (IOI15_boxes)C++14
0 / 100
1 ms604 KiB
#include "boxes.h" #include <vector> #include <limits> #include <iostream> #include <algorithm> using namespace std; long long delivery(int n, int k, int l, int p_[]) { vector<int> p(p_, p_+n); vector<long long> greedy_l; greedy_l.push_back(0); for (int i = 0; i < k; ++i) greedy_l.push_back(2*p[i]); for (int i = k; i < n; ++i) greedy_l.push_back(2*p[i] + greedy_l[i+1-k]); vector<long long> greedy_r; greedy_r.push_back(0); for (int i = 0; i < k; ++i) greedy_r.push_back(2*(l - p[n-i-1])); for (int i = k; i < n; ++i) greedy_r.push_back(2*(l - p[n-i-1]) + greedy_r[i+1-k]); reverse(greedy_r.begin(), greedy_r.end()); for (int i = 0; i <= n; ++i) { cout << greedy_l[i] << ' '; } cout << '\n'; for (int i = 0; i <= n; ++i) { cout << greedy_r[i] << ' '; } cout << '\n'; long long best=numeric_limits<long long>::max(); for (int i = 0; i <= n; ++i) { best=min(best, greedy_l[i] + greedy_r[i]); } for (int i = 0; i+k <= n; ++i) { best = min(best, greedy_l[i] + greedy_r[i+k] + l); } if (n <= k) best = min(best, (long long)l); return best; }
#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...