198332025-12-25 10:29:18KristófSípálya (55 pont)cpp17Hibás válasz 37/55178ms15536 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++)
        {
        lastseen[nums[i]]=i;
        maxk.insert(nums[i]);
        sum+=nums[i];
        }
    long long sv=*maxk.rbegin()+lastseen[*maxk.rbegin()]-j;

    long long ans=(double(sv+sv-k+1)/2)*k-sum;
    //cout<<ans;
    while(i<n)
        {

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

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base37/55
1Elfogadva0/01ms508 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/22ms316 KiB
4Elfogadva2/22ms508 KiB
5Elfogadva2/22ms316 KiB
6Elfogadva2/22ms380 KiB
7Elfogadva3/32ms316 KiB
8Hibás válasz0/17ms492 KiB
9Hibás válasz0/18ms496 KiB
10Hibás válasz0/18ms508 KiB
11Elfogadva1/18ms860 KiB
12Elfogadva1/18ms820 KiB
13Elfogadva1/18ms820 KiB
14Elfogadva2/28ms948 KiB
15Elfogadva2/28ms820 KiB
16Elfogadva2/2171ms10160 KiB
17Elfogadva2/2168ms13992 KiB
18Hibás válasz0/2174ms14764 KiB
19Hibás válasz0/3159ms15536 KiB
20Elfogadva2/2166ms9524 KiB
21Elfogadva2/2166ms10156 KiB
22Elfogadva2/2175ms10156 KiB
23Hibás válasz0/2165ms8876 KiB
24Elfogadva2/2178ms11060 KiB
25Elfogadva2/2174ms9904 KiB
26Hibás válasz0/2170ms10036 KiB
27Elfogadva2/2173ms10804 KiB
28Hibás válasz0/3175ms11284 KiB
29Elfogadva3/3170ms11060 KiB
30Hibás válasz0/3172ms10036 KiB