Submission #1225425

#TimeUsernameProblemLanguageResultExecution timeMemory
1225425Hamed_GhaffariBoxes with souvenirs (IOI15_boxes)C++20
100 / 100
297 ms165872 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MXN = 1e7+4; int a[MXN], b[MXN], sza, szb; ll dpa[MXN], dpb[MXN]; ll delivery(int N, int K, int L, int p[]) { if(L==1) return 0; int lim = (L+1)/2-1; for(int i=0; i<N; i++) if(p[i]) { if(p[i]<=lim) a[sza++] = p[i]; else b[szb++] = p[i]; } for(int i=0; i<sza; i++) { dpa[i] = 2*a[i]; if(i>=K) dpa[i] += dpa[i-K]; } reverse(b, b+szb); for(int i=0; i<szb; i++) { dpb[i] = 2*(L-b[i]); if(i>=K) dpb[i] += dpb[i-K]; } ll ans = (sza ? dpa[sza-1] : 0) + (szb ? dpb[szb-1] : 0); for(int i=0, j; i<=sza && i<=K; i++) { j = min(K-i, szb); ans = min(ans, L + (i==sza ? 0 : dpa[sza-1-i]) + (j==szb ? 0 : dpb[szb-1-j])); } 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...