Submission #1255525

#TimeUsernameProblemLanguageResultExecution timeMemory
1255525testaccount선물상자 (IOI15_boxes)C++20
35 / 100
0 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

long long delivery(int N, int K, int L, int p[]){
    int cut=L/2, lo, hi;
    long long ans=LLONG_MAX;
    vector<int> a,b;
    for(int i=0;i<N;i++){
        if(cut>=p[i]){
            a.push_back(p[i]);
        }else{
            b.push_back(p[i]);    
        }
    }
    for(int i=0;i<N;i++){
        if(p[i]<=cut){
            lo=i;
        }else{
            hi=i;
            break;
        }
    }  
    long long norm=0;
    for(int i=hi-(K-1); i<min(N, lo+(K-1)); i++){
        long long cur=L;
        for(int j=i-1; j>=0; j-=K){
            cur+=p[j]*2;
        }
        for(int j=i+K+1; j<N; j+=K){
            cur+=(L-p[j])*2;    
        }
        ans=min(ans, cur);
    }
    for(int i=int(a.size())-1;i>=0;i-=K){
        norm+=a[i]*2;
    }
    for(int i=0;i<int(b.size());i+=K){
        norm+=(L-b[i])*2;
    }
    //cout<<norm<<" "<<ans<<endl;
    return min(norm, 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...