Submission #1348981

#TimeUsernameProblemLanguageResultExecution timeMemory
1348981enzy선물상자 (IOI15_boxes)C++20
25 / 100
0 ms344 KiB
#include "boxes.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf=1e18;

ll delivery(int N, int K, int L, int p[]){
    vector<int>v;
    for(int i=0;i<N;i++) if(p[i]) v.push_back(p[i]);
    sort(v.begin(),v.end());
    if(v.empty()) return 0;
    int n=v.size();
    auto dist=[&](int a, int b){
        ll c1=abs(a-b), c2=L-c1;
        return min(c1,c2);
    };
    vector<ll>pref(n), suf(n);
    for(int i=0;i<n;i++){
        if(i>=K) pref[i]=pref[i-K];
        pref[i]+=2*v[i];
    }
    for(int i=n-1;i>=0;i--){
        if(i+K<n) suf[i]=suf[i+K];
        suf[i]+=2*(L-v[i]);
    }
    ll resp=min(suf[0],pref.back());
    for(int i=0;i+K-1<n;i++){
        ll at=0;
        if(i-1>=0) at+=pref[i-1];
        if(i+K<n) at+=suf[i+K];
        resp=min(resp,at+L);
    }
    for(int i=0;i+1<n;i++) resp=min(resp,pref[i]+suf[i+1]);
    return resp;
}
#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...