4533 2023. 03. 29 12:51:37 TomaSajt Sípálya (55 pont) cpp17 Elfogadva 55/55 29ms 13412 KiB
#include <bits/stdc++.h>
using namespace std;
#define speed cin.tie(0); ios::sync_with_stdio(0)
typedef long long ll;

vector<ll> range_maxes(const vector<ll>& data, int k) {
    int n = data.size();
    vector<ll> res(n - k + 1);
    deque<int> dq;
    for (int i = 0; i < n; i++) {
        while (!dq.empty() && i - dq.front() >= k) dq.pop_front();
        while (!dq.empty() && data[dq.back()] <= data[i]) dq.pop_back();
        dq.push_back(i);
        if (i >= k - 1) {
            res[i - k + 1] = data[dq.front()];
        }
    }
    return res;
}

vector<ll> range_sums(const vector<ll>& data, int k) {
    int n = data.size();
    vector<ll> res(n - k + 1);
    ll sum = 0;
    for (int i = 0; i < n; i++) {
        sum += data[i];
        if (i >= k) {
            sum -= data[i - k];
        }
        if (i >= k - 1) {
            res[i - k + 1] = sum;
        }
    }
    return res;
}

int main() {
    speed;
    int n, k; cin >> n >> k;
    vector<ll> data(n);
    for (auto& a : data) cin >> a;
    for (int i = 0; i < n; i++) data[i] += i;
    vector<ll> maxes = range_maxes(data, k);
    vector<ll> sums = range_sums(data, k);
    ll best = LLONG_MAX;
    for (int i = 0; i <= n - k; i++) {
        ll cost = k * maxes[i] - sums[i];
        best = min(best, cost);
    }
    cout << best;
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 3ms 2196 KiB
3 Elfogadva 2/2 3ms 2480 KiB
4 Elfogadva 2/2 3ms 2640 KiB
5 Elfogadva 2/2 3ms 2928 KiB
6 Elfogadva 2/2 3ms 3148 KiB
7 Elfogadva 3/3 3ms 3360 KiB
8 Elfogadva 1/1 4ms 4024 KiB
9 Elfogadva 1/1 4ms 3860 KiB
10 Elfogadva 1/1 4ms 3676 KiB
11 Elfogadva 1/1 4ms 3932 KiB
12 Elfogadva 1/1 4ms 3940 KiB
13 Elfogadva 1/1 4ms 4160 KiB
14 Elfogadva 2/2 4ms 4360 KiB
15 Elfogadva 2/2 4ms 4588 KiB
16 Elfogadva 2/2 28ms 13236 KiB
17 Elfogadva 2/2 27ms 10344 KiB
18 Elfogadva 2/2 27ms 10396 KiB
19 Elfogadva 3/3 26ms 8872 KiB
20 Elfogadva 2/2 28ms 12980 KiB
21 Elfogadva 2/2 27ms 13236 KiB
22 Elfogadva 2/2 28ms 13216 KiB
23 Elfogadva 2/2 28ms 13332 KiB
24 Elfogadva 2/2 29ms 13324 KiB
25 Elfogadva 2/2 28ms 13412 KiB
26 Elfogadva 2/2 28ms 13380 KiB
27 Elfogadva 2/2 28ms 12888 KiB
28 Elfogadva 3/3 27ms 12888 KiB
29 Elfogadva 3/3 27ms 12760 KiB
30 Elfogadva 3/3 27ms 12760 KiB