218872026-01-14 09:56:18hunzombiSípálya (55 pont)cpp17Wrong answer 37/55100ms14348 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll calcSum(ll m, ll p, ll k, ll i) {
    ll res = m * k;
    res -= (i - p) * (i - p + 1) / 2;
    res += (k + p - i - 1) * (k + p - i) / 2;
    return res;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll n, k;
    cin >> n >> k;

    vector<ll> vec(n);
    unordered_map<ll, ll> last;
    last.reserve(n);

    for (ll i=0; i < n; i++) cin >> vec[i];

    set<ll> ms;
    ll curr = 0;
    ll ans = LLONG_MAX;

    for (ll i=0; i < k - 1; i++) {
        ms.insert(vec[i]);
        last[vec[i]] = i;
        curr += vec[i];
    }

    for (ll i=k-1; i < n; i++) {
        ms.insert(vec[i]);
        last[vec[i]] = i;
        curr += vec[i];

        ll max_val = *ms.rbegin();
        ll max_idx = last[max_val];

        ans = min(ans, calcSum(max_val, max_idx, k, i) - curr);

        if (last[vec[i - k + 1]] == i - k + 1) {
            ms.erase(vec[i - k + 1]);
        }
        curr -= vec[i - k + 1];
    }

    cout << ans << '\n';

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base37/55
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/22ms316 KiB
7Accepted3/31ms468 KiB
8Wrong answer0/14ms620 KiB
9Wrong answer0/14ms564 KiB
10Wrong answer0/14ms584 KiB
11Accepted1/14ms712 KiB
12Accepted1/14ms820 KiB
13Accepted1/16ms1040 KiB
14Accepted2/26ms1092 KiB
15Accepted2/24ms900 KiB
16Accepted2/290ms9644 KiB
17Accepted2/293ms13568 KiB
18Wrong answer0/2100ms14080 KiB
19Wrong answer0/390ms14348 KiB
20Accepted2/293ms9504 KiB
21Accepted2/293ms9776 KiB
22Accepted2/293ms9780 KiB
23Wrong answer0/290ms8756 KiB
24Accepted2/298ms10244 KiB
25Accepted2/294ms9732 KiB
26Wrong answer0/296ms9732 KiB
27Accepted2/292ms10500 KiB
28Wrong answer0/394ms10556 KiB
29Accepted3/394ms10812 KiB
30Wrong answer0/392ms10036 KiB