81642024-01-12 15:05:27bovizdbSípálya (55 pont)cpp17Hibás válasz 3/5528ms10140 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
#define vll vector<ll>
#define v2d vector<vector<ll>>
#define vpll vector<pll>
#define qll queue<ll>
#define stll stack<ll>
#define sll set<ll>
#define mll map<ll, ll>

void solve()
{
    ll n, k;
    cin >> n >> k;
    vll h(n);
    for (ll i = 0; i < n; i++)
    {
        cin >> h[i];
    }
    ll mx = 0, mxpos = 0;
    for (ll i = 0; i < k; i++)
    {
        if (h[i] > mx+(mxpos-i))
        {
            mx = h[i];
            mxpos = i;
        }
    }
    ll cost = 0;
    for (ll i = 0; i < k; i++)
    {
        cost += mx+(mxpos-i)-h[i];
    }
    ll out = cost;
    for (ll i = 1; i < n-k+1; i++)
    {
        cost -= mx+(mxpos-(i-1))-h[i-1];
        ll oldmx = mx, oldpos = mxpos;
        if (h[i+k-1] >= mx+(mxpos-(i+k-2)))
        {
            cost += (k-1)*(h[i+k-1] - mx+(mxpos-(i+k-2))+1);
        }
        if (mxpos == i-1)
        {
            for (ll j = 0; j < k-1; j++)
            {
                if (h[i+j] > mx+(mxpos-(i+j)))
                {
                    mx = h[i+j];
                    mxpos = i+j;
                }
            }
            cost -= (k-1)*((oldmx+(oldpos-i)-h[i]) - (mx+(mxpos-i)-h[i]));
            cost += mx+(mxpos-(i+k-1))-h[i+k-1];
        }
        else
        {
            cost += mx+(mxpos-(i+k-1))-h[i+k-1];
        }
        out = min(out, cost);
    }
    cout << out;
}
 
signed 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
base3/55
1Elfogadva0/03ms1824 KiB
2Hibás válasz0/03ms2028 KiB
3Hibás válasz0/23ms2124 KiB
4Hibás válasz0/23ms2388 KiB
5Hibás válasz0/23ms2608 KiB
6Hibás válasz0/23ms2956 KiB
7Elfogadva3/33ms3092 KiB
8Hibás válasz0/14ms3272 KiB
9Hibás válasz0/14ms3348 KiB
10Hibás válasz0/14ms3420 KiB
11Hibás válasz0/14ms3740 KiB
12Hibás válasz0/14ms4028 KiB
13Hibás válasz0/14ms4060 KiB
14Hibás válasz0/24ms4132 KiB
15Hibás válasz0/24ms4204 KiB
16Hibás válasz0/228ms8488 KiB
17Hibás válasz0/227ms9292 KiB
18Hibás válasz0/227ms9320 KiB
19Hibás válasz0/327ms9376 KiB
20Hibás válasz0/227ms9316 KiB
21Hibás válasz0/227ms9576 KiB
22Hibás válasz0/227ms9628 KiB
23Hibás válasz0/227ms9944 KiB
24Hibás válasz0/228ms9796 KiB
25Hibás válasz0/227ms10056 KiB
26Hibás válasz0/227ms9952 KiB
27Hibás válasz0/227ms10008 KiB
28Hibás válasz0/327ms10012 KiB
29Hibás válasz0/327ms10140 KiB
30Hibás válasz0/327ms10108 KiB