Submission #30985

#TimeUsernameProblemLanguageResultExecution timeMemory
30985kajebiiiBoxes with souvenirs (IOI15_boxes)C++14
10 / 100
2 ms376 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; #define SZ(v) ((int)(v).size()) #define ALL(v) (v).begin(),(v).end() #define one first #define two second typedef long long ll; typedef pair<double, double> pd; typedef pair<int, int> pi; typedef pair<ll, int> pli; typedef pair<ll, ll> pll; typedef pair<ll, pi> plp; typedef tuple<int, int, int> ti; typedef tuple<ll, int, int> tli; const int INF = 0x3f2f1f0f; const ll LINF = 1ll * INF * INF * 2; int N, K, L; deque<int> Ps; ll delivery(int n, int k, int l, int p[]) { N = n; K = k; L = l; for(int i=0; i<N; i++) Ps.push_back(p[i]); while(SZ(Ps) > 0 && Ps.front() == 0) Ps.pop_front(); ll ans = 0; while(SZ(Ps) > 0) { int lix = min(K-1, SZ(Ps)-1); if(Ps[lix] <= L/2) { ans += Ps[lix] * 2; for(int i=0; i<=lix; i++) Ps.pop_front(); }else break; } while(SZ(Ps) > 0) { int rix = max(SZ(Ps)-K, 0); if(Ps[rix] >= (L+1)/2) { ans += (L - Ps[rix]) * 2; for(int i=SZ(Ps)-1; i>=rix; i--) Ps.pop_back(); }else break; } if(SZ(Ps) > 0) { ans += L; if(SZ(Ps) > K) { int lix = K; int rix = SZ(Ps) - K - 1; ans += min(Ps[rix] * 2, (L - Ps[lix]) * 2); } } 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...