10982022-03-02 21:10:12peti1234TV szolgáltatókcpp14Accepted 40/4043ms26624 KiB
#include <bits/stdc++.h>

using namespace std;
int n, k, l[100005], r[100005];
long long kis=0, nagy=1e9+1, koz;

long long proba(int kezd) {
    int veg=kezd+k-1;
    // a kezd, kezd+1, .... kezd+k-1 helyeket kell lefedni
    long long valasz=0;
    for (int i=1; i<=n; i++) {
        valasz+=max(0, l[i]-kezd);
        valasz+=max(0, veg-r[i]);
    }
    return valasz;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin >> n >> k;
    for (int i=1; i<=n; i++) {
        cin >> l[i] >> r[i];
    }

    // "ternary search - konvex kereses" a fuggveny konvex, ezert valameddig monoton csokken utana pedig valameddig monoton no
    // bintaris keresessel konnyu megtalalni, hogy hol valtozik a monotonitas
    while (nagy-kis>1) {
        koz=(nagy+kis)/2;
        if (proba(koz)>proba(koz+1)) {
            kis=koz;
        } else {
            nagy=koz;
        }
    }

    // a ket ertek kozul biztosan az egyik lesz a minimum hely
    cout << min(proba(kis), proba(nagy));
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/02ms1860 KiB
2Accepted0/01ms1920 KiB
3Accepted1/11ms1988 KiB
4Accepted1/11ms1992 KiB
5Accepted1/11ms2036 KiB
6Accepted1/12ms2020 KiB
7Accepted2/22ms2036 KiB
8Accepted2/21ms2052 KiB
9Accepted2/21ms2060 KiB
10Accepted2/21ms2076 KiB
11Accepted2/217ms3496 KiB
12Accepted2/217ms4168 KiB
13Accepted2/216ms4844 KiB
14Accepted2/214ms5532 KiB
15Accepted2/228ms7620 KiB
16Accepted2/230ms8960 KiB
17Accepted2/218ms9164 KiB
18Accepted2/220ms10132 KiB
19Accepted2/218ms11112 KiB
20Accepted2/218ms12076 KiB
21Accepted1/118ms13048 KiB
22Accepted1/119ms14028 KiB
23Accepted1/139ms16780 KiB
24Accepted1/135ms18720 KiB
25Accepted1/137ms20656 KiB
26Accepted1/135ms22620 KiB
27Accepted1/135ms24580 KiB
28Accepted1/143ms26624 KiB