4003 2023. 03. 08 08:32:43 1478 Sípálya (55 pont) cpp17 Elfogadva 55/55 120ms 24168 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    //ifstream cin("in.txt");
    long long n;
    cin >> n;
    long long k;
    cin >> k;
    vector<long long> heights(n + 2);
    vector<long long> ps(n + 1);
    for(int i = 1; i <= n; i++){
        cin >> heights[i];
        ps[i] = ps[i - 1] + heights[i];
    }

    multiset<long long> s;
    for(int i = 1; i <= k; i++){
        s.insert(heights[i] + i);
    }

    long long ans = LONG_MAX;
    for(long long i = k; i <= n; i++){
        long long actualsum = ps[i] - ps[i - k];
        long long neededsum = (*s.rbegin()- i) * k + (k - 1)*k/2;
        //cout << i << " " << heights[i] << " " << *s.rbegin() - i << " " << neededsum - actualsum << '\n';
        ans = min(ans, neededsum - actualsum);
        s.erase(s.lower_bound(heights[i - k + 1] + i - k + 1));
        s.insert(heights[i + 1] + i + 1);
    }
    cout << ans;



    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 3ms 2184 KiB
3 Elfogadva 2/2 3ms 2292 KiB
4 Elfogadva 2/2 3ms 2452 KiB
5 Elfogadva 2/2 4ms 2676 KiB
6 Elfogadva 2/2 3ms 2892 KiB
7 Elfogadva 3/3 3ms 3096 KiB
8 Elfogadva 1/1 8ms 3856 KiB
9 Elfogadva 1/1 8ms 3892 KiB
10 Elfogadva 1/1 8ms 3856 KiB
11 Elfogadva 1/1 8ms 4212 KiB
12 Elfogadva 1/1 8ms 3928 KiB
13 Elfogadva 1/1 8ms 4156 KiB
14 Elfogadva 2/2 8ms 4264 KiB
15 Elfogadva 2/2 8ms 4400 KiB
16 Elfogadva 2/2 109ms 10576 KiB
17 Elfogadva 2/2 114ms 19440 KiB
18 Elfogadva 2/2 114ms 20480 KiB
19 Elfogadva 3/3 116ms 24168 KiB
20 Elfogadva 2/2 115ms 11816 KiB
21 Elfogadva 2/2 111ms 11828 KiB
22 Elfogadva 2/2 112ms 11968 KiB
23 Elfogadva 2/2 114ms 11628 KiB
24 Elfogadva 2/2 120ms 11844 KiB
25 Elfogadva 2/2 115ms 12596 KiB
26 Elfogadva 2/2 114ms 12904 KiB
27 Elfogadva 2/2 112ms 13392 KiB
28 Elfogadva 3/3 114ms 13396 KiB
29 Elfogadva 3/3 118ms 13960 KiB
30 Elfogadva 3/3 115ms 14496 KiB