제출 #785482

#제출 시각아이디문제언어결과실행 시간메모리
785482alexander707070선물상자 (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...