Submission #470108

#TimeUsernameProblemLanguageResultExecution timeMemory
470108Cross_RatioBoxes with souvenirs (IOI15_boxes)C++14
0 / 100
2 ms332 KiB
#include <bits/stdc++.h>
using namespace std;
#include "boxes.h"
const long long int INF = 1e18;
int A[50000006];
int B[50000006];
int cnt1, cnt2;
long long int C[50000006];
long long int D[50000006];
long long delivery(int N, int K, int L, int* P) {
    int i, j;
    for(i=0;i<N;i++) {
        if(P[i] < L/2) {
            A[cnt1++] = P[i];
        }
        else B[cnt2++] = L - P[i];
    }
    reverse(B, B + cnt2);
    for(i=0;i<cnt1;i++) {
        if(i < K) C[i] = 2 * A[i];
        else C[i] = C[i-K] + 2*A[i];
    }
    for(i=0;i<cnt2;i++) {
        if(i < K) D[i] = 2 * B[i];
        else D[i] = D[i-K] + 2*B[i];
    }
    long long int ans = INF;
    for(i=0;i<cnt1;i++) {
        for(j=0;j<cnt2;j++) {
            int c = cnt1 - i + cnt2 - j - 2;
            ans = min(ans, C[i] + D[j] + (c - 1 + K) / K * L);
        }
    }
    return 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...