4838 2023. 03. 31 16:51:55 Error42 TV szolgáltatók cpp17 Elfogadva 40/40 112ms 5832 KiB
#include <algorithm>
#include <iostream>
#include <functional>
#include <vector>

using namespace std;

using ll = long long;

// lo, hi > 0
template <typename T>
int binary_first_true(T lo, T hi, function<bool(T const&)> const& pred) {
    hi--;

    while (lo < hi) {
        T const mid = (lo + hi) / 2;

        if (pred(mid))
            hi = mid;
        else
            lo = mid + 1;
    }

    return lo;
}

int main() {
#ifdef _DEBUG
    int const maxv = 10;
#else
    int const maxv = 1e9;
#endif

    int n, k;
    cin >> n >> k;

    vector<int> s(n);
    vector<int> e(n);

    for (int i = 0; i < n; i++)
        cin >> s[i] >> e[i];

    sort(s.begin(), s.end());
    sort(e.begin(), e.end());

    int const pos = binary_first_true<int>(1, maxv, [&](int const& cur) {
        int retract_left = s.end() - lower_bound(s.begin(), s.end(), cur + 1);
        int extend_right = lower_bound(e.begin(), e.end(), cur + k) - e.begin();
        
        return extend_right > retract_left;
    });

#ifdef _DEBUG
    cout << pos << "\n";
#endif

    ll ans = 0;

    for (int i = 0; i < n; i++) {
        ans += max(0, s[i] - pos);
        ans += max(0, pos + k - 1 - e[i]);
    }

    cout << ans << "\n";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 3ms 2008 KiB
3 Elfogadva 1/1 3ms 2216 KiB
4 Elfogadva 1/1 3ms 2460 KiB
5 Elfogadva 1/1 3ms 2644 KiB
6 Elfogadva 1/1 3ms 2856 KiB
7 Elfogadva 2/2 3ms 3100 KiB
8 Elfogadva 2/2 3ms 3152 KiB
9 Elfogadva 2/2 3ms 3156 KiB
10 Elfogadva 2/2 3ms 3180 KiB
11 Elfogadva 2/2 46ms 4044 KiB
12 Elfogadva 2/2 46ms 4140 KiB
13 Elfogadva 2/2 46ms 4256 KiB
14 Elfogadva 2/2 46ms 4344 KiB
15 Elfogadva 2/2 90ms 4992 KiB
16 Elfogadva 2/2 90ms 5200 KiB
17 Elfogadva 2/2 57ms 4556 KiB
18 Elfogadva 2/2 57ms 4648 KiB
19 Elfogadva 2/2 57ms 4552 KiB
20 Elfogadva 2/2 57ms 4800 KiB
21 Elfogadva 1/1 57ms 4920 KiB
22 Elfogadva 1/1 57ms 4924 KiB
23 Elfogadva 1/1 112ms 5800 KiB
24 Elfogadva 1/1 112ms 5680 KiB
25 Elfogadva 1/1 112ms 5736 KiB
26 Elfogadva 1/1 112ms 5832 KiB
27 Elfogadva 1/1 112ms 5756 KiB
28 Elfogadva 1/1 112ms 5772 KiB