Submission #849360

#TimeUsernameProblemLanguageResultExecution timeMemory
849360abcvuitunggioBoxes with souvenirs (IOI15_boxes)C++17
35 / 100
1 ms600 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> a,b;
long long res;
long long delivery(int N, int K, int L, int p[]){
    for (int i=0;i<N;i++)
        if (p[i]<=L/2)
            a.push_back(p[i]);
        else
            b.push_back(L-p[i]);
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    int i=(int)a.size()-1,j=(int)b.size()-1;
    while (i>=0||j>=0){
        if ((i<0?0:a[i]*2)+(j<0?0:b[j]*2)<=L){
            if (j<0||(i>=0&&a[i]>b[j])){
                res+=a[i]*2;
                i-=K;
                continue;
            }
            res+=b[j]*2;
            j-=K;
            continue;
        }
        int x=0,mx=0,tmp=K;
        while (tmp--){
            if (i<0&&j<0)
                break;
            if (j<0||(i>=0&&a[i]>b[j])){
                mx=max(mx,a[i]);
                i--;
                x|=1;
                continue;
            }
            mx=max(mx,b[j]);
            j--;
            x|=2;
        }
        if (x==3)
            res+=L;
        else
            res+=mx*2;
    }
    return res;
}
#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...