Submission #339609

#TimeUsernameProblemLanguageResultExecution timeMemory
339609bigDuckBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
732 ms294028 KiB
#include "boxes.h" #include<bits/stdc++.h> using namespace std; #define INIT ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define mp make_pair #define pb push_back #define ft first #define sc second #define ll long long #define pii pair<int, int> #define count_bits __builtin_popcount #define int ll int p1[10000010], p2[10000010]; long long delivery(int32_t N, int32_t K, int32_t L, int32_t p[]) { int n=N, k=K, l=L; int ac=k; int cr=0; for(int i=0; i<n; i++){ if(p[i]>0){ac--;} if(ac==0){ cr=cr+p[i]*2; p1[i]=min(cr, (i>=(k))?(p1[i-k]+2*p[i]):(p[i]*2) ); ac=k; } else{ p1[i]=min(cr+p[i]*2, (i>=(k))?(p1[i-k]+2*p[i]):(p[i]*2) ); } } cr=0; ac=k; for(int i=n-1; i>=0; i--){ if(p[i]>0){ac--;} if(ac==0){ cr=cr+(l-p[i])*2; p2[i]=min(cr, ( ((n-i-1)>=k)?(p2[i+k]+2*(l-p[i]) ):((l-p[i])*2) ) ) ; ac=k; } else{ p2[i]=min(cr+(l-p[i])*2, ( ((n-i-1)>=k)?(p2[i+k]+2*(l-p[i]) ):((l-p[i])*2) ) ) ; } } int mn=1e17; mn=mn*10; mn=min(mn, p2[0]); for(int i=0; i<n; i++){ mn=min(p1[i]+p2[i+1], mn); } for(int i=0; i<n; i++){ mn=min(mn, p2[i]+( ( (i/k)+( ( (i%k)>0 )?(1):(0) ) )*l )); mn=min(mn, p1[i]+( ( (n-i-1)/k+( ( ((n-i-1)%k)>0 )?(1):(0) ) )*l ) ); } for(int i=0; i<n; i++){ if( (i-k)>=0 ){ mn=min(p2[i+1]+p1[i-k]+l, mn); } } mn=min(mn, ( (n/k)+ ( ((n%k)>0)?(1):(0) ) )*l ); return mn; }
#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...