198362025-12-25 10:55:57KristófSípálya (55 pont)cpp17Hibás válasz 2/55118ms8104 KiB
#include <iostream>
#include <vector>
#include <map>
#include <set>
using namespace std;

int main()
{
    int n;
    long long k;
    cin>>n>>k;
    vector<int> nums(n);
    multiset<int> maxk;
    map<int,int> lastseen;
    for(int & x:nums)cin>>x;
    int j=0;
    long long sum=0;
    int i=0;
    for(;i<k;i++)
        {
        maxk.insert(nums[i]+i);
        sum+=nums[i];
        }
    long long sv=*maxk.rbegin()-j;

    long long ans=(sv+sv-k+1)/2*k-sum;
    //cout<<ans;
    while(i<n)
        {
        maxk.erase(maxk.find(nums[j]+j));
        maxk.insert(nums[i]+i);
        sum-=nums[j];
        j++;
        sum+=nums[i];
        sv=*maxk.rbegin()-j;
        ans=min(ans,(sv+sv-k+1)/2*k-sum);
        //cout<<i<<" "<<j<<"\n";
        i++;
        }
    cout<<ans;

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base2/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/21ms508 KiB
4Hibás válasz0/22ms508 KiB
5Hibás válasz0/22ms400 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/32ms404 KiB
8Hibás válasz0/16ms456 KiB
9Hibás válasz0/16ms396 KiB
10Hibás válasz0/17ms464 KiB
11Hibás válasz0/17ms368 KiB
12Hibás válasz0/16ms316 KiB
13Hibás válasz0/16ms440 KiB
14Hibás válasz0/26ms624 KiB
15Hibás válasz0/26ms432 KiB
16Hibás válasz0/2115ms1460 KiB
17Hibás válasz0/2115ms5800 KiB
18Hibás válasz0/2118ms6320 KiB
19Hibás válasz0/3116ms8104 KiB
20Hibás válasz0/2114ms1964 KiB
21Hibás válasz0/2111ms1712 KiB
22Hibás válasz0/2111ms1708 KiB
23Hibás válasz0/2112ms1448 KiB
24Hibás válasz0/2115ms1588 KiB
25Hibás válasz0/2115ms1964 KiB
26Hibás válasz0/2115ms2356 KiB
27Hibás válasz0/2112ms2480 KiB
28Hibás válasz0/3112ms2492 KiB
29Hibás válasz0/3114ms2612 KiB
30Hibás válasz0/3115ms2868 KiB