Submission #1242371

#TimeUsernameProblemLanguageResultExecution timeMemory
1242371tkm_algorithmsBoxes with souvenirs (IOI15_boxes)C++20
100 / 100
352 ms174756 KiB
/** * In the name of Allah * We are nothing and you're everything * Ya Muhammad! **/ #include <bits/stdc++.h> #include "boxes.h" using namespace std; using ll = long long; using ull = uint64_t; #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() //#define int long long const char nl = '\n'; long long delivery(int n, int k, int L, int p[]) { ll res = 0; vector<ll> l; for (int i = 0; i < n; ++i) { if (p[i]>L/2)break; if (i+1 <= k)l.push_back(p[i]*2); else l.push_back(l[sz(l)-k]+p[i]*2); res = l.back(); } ll back = 0; vector<ll> r; for (int i = n-1; i >= 0; --i) { if (p[i] <= L/2)break; if (n-i <= k)r.push_back((L-p[i])*2); else r.push_back(r[sz(r)-k]+(L-p[i])*2); back = r.back(); } res += back; int start = 0; while (start < sz(l)) { int len1 = sz(l)-start; if (len1>=k){start++;continue;} if (sz(r)<=k-len1) res = min(res, (start>0?l[start-1]:0ll)+L); else { res = min(res, (start>0?l[start-1]:0ll)+L+r[sz(r)-k+len1-1]); } start += 1; } return res; }
#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...