82112024-01-12 19:42:31gergomiszoriSípálya (55 pont)cpp17Hibás válasz 0/55470ms9324 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define endl "\n"
#define pll pair<ll,ll>
#define fs first
#define sc second

const ll MOD = 1e9+7;

void solve()
{
    ll n, k;
    cin >> n >> k;
    vector<ll> a(n);
    
    for(ll i = 0; i < n; i++) cin >> a[i];
    
    if(k == 1)
    {
        cout << 0 << endl;
        return;
    }

    vector<ll> pref(n, 0), suf(n, 0);
    ll ans = 0;

    ll maxe = -1;
    ll maxl = 0;
    
    for(ll i = 0; i < n; i++)
    {
        if(a[i] >= maxe || (maxe != -1 && a[i] > maxe - (i-maxl)))
        {
            maxe = a[i];
            maxl = i;
        }
    }

    vector<ll> dist(n, 0);

    for(ll i = 0; i < n; i++)
    {
        ll magas = maxl-i + maxe;
        dist[i] = magas - a[i];
        ans += dist[i];
        pref[i] += ans;
    }
    suf = pref;
    reverse(suf.begin(), suf.end());

    ll fans = ans;

    for(ll i = 0; i < n-k+1; i++)
    {
        ll min_dist = 1e17;
        for(ll j = 0; j < k; j++)
        {
            min_dist = min(min_dist, dist[i+j]);
        }
        ll ans2 = fans - (min_dist)*k;
        if(i > 0) ans2 -= pref[i-1];
        if(i < n-k) ans2 -= suf[i+k];

        ans = min(ans, ans2);
    }

    cout << ans << endl;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    ll t = 1;
    //cin >> t;
    while(t--)
    {
        solve();
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/55
1Elfogadva0/03ms1832 KiB
2Hibás válasz0/03ms2052 KiB
3Hibás válasz0/23ms2424 KiB
4Hibás válasz0/23ms2640 KiB
5Hibás válasz0/23ms2692 KiB
6Hibás válasz0/23ms2660 KiB
7Hibás válasz0/33ms2920 KiB
8Hibás válasz0/18ms3668 KiB
9Hibás válasz0/18ms3704 KiB
10Hibás válasz0/18ms3796 KiB
11Hibás válasz0/113ms3664 KiB
12Hibás válasz0/112ms3856 KiB
13Hibás válasz0/124ms3812 KiB
14Hibás válasz0/227ms3848 KiB
15Hibás válasz0/213ms3848 KiB
16Időlimit túllépés0/2463ms8804 KiB
17Időlimit túllépés0/2462ms8936 KiB
18Időlimit túllépés0/2458ms8852 KiB
19Időlimit túllépés0/3470ms8736 KiB
20Időlimit túllépés0/2467ms8884 KiB
21Időlimit túllépés0/2465ms8868 KiB
22Időlimit túllépés0/2462ms9028 KiB
23Időlimit túllépés0/2458ms9236 KiB
24Időlimit túllépés0/2467ms9284 KiB
25Időlimit túllépés0/2470ms9124 KiB
26Időlimit túllépés0/2462ms9228 KiB
27Időlimit túllépés0/2439ms9324 KiB
28Időlimit túllépés0/3462ms9228 KiB
29Időlimit túllépés0/3462ms9276 KiB
30Időlimit túllépés0/3462ms9304 KiB