Submission #785482

#TimeUsernameProblemLanguageResultExecution timeMemory
785482alexander707070Boxes with souvenirs (IOI15_boxes)C++14
50 / 100
2021 ms13808 KiB
#include<bits/stdc++.h> #define MAXN 10000007 using namespace std; const long long inf=1e17; int n,k,a[MAXN],w; long long l,r,len; long long dp[MAXN]; long long cost(int from,int to){ l=a[from]; r=w-a[to]; len=a[to]-a[from]; if(l>r)swap(l,r); return min(l+len+r,2*l+2*len); } long long delivery(int N, int K, int L,int P[]){ n=N; k=K; w=L; for(int i=1;i<=n;i++){ a[i]=P[i-1]; } sort(a+1,a+n+1); for(int i=1;i<=n;i++){ dp[i]=inf; if(a[i]<=w/2-1){ dp[i]=dp[max(i-k,0)]+cost(max(i-k+1,1),i); }else{ for(int f=1;f<=min(i,k);f++){ dp[i]=min(dp[i],dp[i-f]+cost(i-f+1,i)); } } } return dp[n]; } /* int main(){ cout<<delivery(3,2,8,{1,2,5})<<"\n"; } */
#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...