219102026-01-14 10:16:58hunzombiSípálya (55 pont)cpp17Hibás válasz 0/5568ms10492 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];

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

    for (int i = 0; i < n; i++) {
        ms.insert(vec[i] + i);
        curr += vec[i];

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

        if (i >= k - 1) {
            ll L = i - k + 1;
            ll H = *ms.begin() - L;

            ll reqHeight = k * H - k * (k - 1) / 2;
            ans = min(ans, reqHeight - curr);
        }
    }

    cout << -1 * ans << '\n';

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/55
1Elfogadva0/01ms316 KiB
2Hibás válasz0/01ms508 KiB
3Hibás válasz0/21ms500 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/22ms332 KiB
6Hibás válasz0/21ms552 KiB
7Hibás válasz0/31ms316 KiB
8Hibás válasz0/14ms564 KiB
9Hibás válasz0/14ms564 KiB
10Hibás válasz0/14ms404 KiB
11Hibás válasz0/14ms564 KiB
12Hibás válasz0/14ms576 KiB
13Hibás válasz0/14ms564 KiB
14Hibás válasz0/24ms564 KiB
15Hibás válasz0/24ms564 KiB
16Hibás válasz0/261ms3956 KiB
17Hibás válasz0/264ms8220 KiB
18Hibás válasz0/268ms8500 KiB
19Hibás válasz0/368ms10492 KiB
20Hibás válasz0/264ms4404 KiB
21Hibás válasz0/264ms4148 KiB
22Hibás válasz0/263ms4340 KiB
23Hibás válasz0/264ms4040 KiB
24Hibás válasz0/264ms4148 KiB
25Hibás válasz0/265ms4412 KiB
26Hibás válasz0/265ms4608 KiB
27Hibás válasz0/264ms5004 KiB
28Hibás válasz0/364ms4916 KiB
29Hibás válasz0/364ms5128 KiB
30Hibás válasz0/368ms5572 KiB