3224 2023. 02. 22 20:40:02 zsombor TV szolgáltatók cpp17 Elfogadva 40/40 111ms 6316 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
using ll = long long;

int n, k, a = 1, b = 1e9, c;
ll ans = 0;
vector <int> L;
vector <int> R;

bool test(int l) {
    int r = l + k - 1, dif = 0;
    dif += n - (upper_bound(L.begin(), L.end(), l) - L.begin());
    dif -= upper_bound(R.begin(), R.end(), r) - R.begin();
    return (dif > 0 ? true : false);
}

int main()
{
    cin >> n >> k;
    L.resize(n);
    R.resize(n);
    for (int i = 0; i < n; i++) cin >> L[i] >> R[i];
    sort(L.begin(), L.end());
    sort(R.begin(), R.end());
    while (b - a > 1) {
        c = (a + b) / 2;
        (test(c) ? a = c : b = c);
    }
    int l = b, r = b + k - 1;
    for (int i : L) ans += (i > l ? i - l : 0);
    for (int i : R) ans += (i < r ? r - i : 0);
    cout << ans;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1752 KiB
2 Elfogadva 0/0 3ms 1920 KiB
3 Elfogadva 1/1 3ms 2136 KiB
4 Elfogadva 1/1 3ms 2380 KiB
5 Elfogadva 1/1 3ms 2600 KiB
6 Elfogadva 1/1 3ms 2816 KiB
7 Elfogadva 2/2 3ms 3016 KiB
8 Elfogadva 2/2 3ms 3120 KiB
9 Elfogadva 2/2 3ms 3200 KiB
10 Elfogadva 2/2 3ms 3412 KiB
11 Elfogadva 2/2 46ms 4248 KiB
12 Elfogadva 2/2 46ms 4460 KiB
13 Elfogadva 2/2 46ms 4688 KiB
14 Elfogadva 2/2 46ms 4756 KiB
15 Elfogadva 2/2 90ms 5476 KiB
16 Elfogadva 2/2 90ms 5684 KiB
17 Elfogadva 2/2 54ms 5124 KiB
18 Elfogadva 2/2 54ms 5052 KiB
19 Elfogadva 2/2 54ms 5152 KiB
20 Elfogadva 2/2 54ms 5140 KiB
21 Elfogadva 1/1 54ms 5360 KiB
22 Elfogadva 1/1 54ms 5472 KiB
23 Elfogadva 1/1 108ms 6312 KiB
24 Elfogadva 1/1 111ms 6316 KiB
25 Elfogadva 1/1 108ms 6316 KiB
26 Elfogadva 1/1 108ms 6312 KiB
27 Elfogadva 1/1 108ms 6316 KiB
28 Elfogadva 1/1 108ms 6316 KiB