Submission #425527

#TimeUsernameProblemLanguageResultExecution timeMemory
425527haxormanBoxes with souvenirs (IOI15_boxes)C++14
10 / 100
1 ms204 KiB
#include "boxes.h"
#include "bits/stdc++.h"
using namespace std;

int n, k, l;

long long delivery(int N, int K, int L, int p[]) {
    n = N, k = K, l = L;

    long long ans = 0;

    if (k == 1) {
        for (int i = 0; i < n; ++i) {
            ans += min(p[i], (l - 1) - p[i] + 1) * 2;
        }
    }
    else if (k == n) {
        int lb = 0, rb = l - 1;
        while (rb - l > 1) {
            int mid = (lb + rb) / 2;

            if (p[mid] <= L / 2) {
                lb = mid;
            }
            else {
                rb = mid;
            }
        }
        ans += 2 * lb;

        lb = 1, rb = l;
        while (rb - l > 1) {
            int mid = (lb + rb) / 2;

            if (p[mid] > L / 2) {
                rb = mid;
            }
            else {
                lb = mid;
            }
        }

        if (rb != l) {
            ans += 2 * ((l - 1) - rb + 1);
        }
        ans = min(ans, (long long) 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...