#include<bits/stdc++.h>
using namespace std;
int _tm[4000312],a[512],talrc[4000312],qz[512];
int f(int x)
{
return x>=0?x:0;
}
int main()
{
int n,m;
cin>>n>>m;
memset(a,-1,sizeof(a));
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
while(a[talrc[0]+1]==0) talrc[0]++;
for(int i=1;i<=4000300;i++)
{
talrc[i]=talrc[i-1];
while(a[talrc[i]+1]==i) talrc[i]++;
}
qz[1]=a[1];
for(int i=2;i<=n;i++)
qz[i]=qz[i-1]+a[i];
_tm[0]=0;
for(int i=1;i<=4000300;i++)
{
if(talrc[i]==talrc[f(i-m-m)])
{
_tm[i]=_tm[f(i-m)];
continue;
}
_tm[i]=2147483647;
if(i<m) _tm[i]=talrc[i]*i-qz[talrc[i]];
for(int j=i-m;j>=f(i-m-m);j--)
_tm[i]=min(_tm[i],_tm[j]+(talrc[i]-talrc[j])*i-(qz[talrc[i]]-qz[talrc[j]]));
}
/*
//X
int ans=2147483647;
for(int i=a[n];i<=4000300;i++)
ans=min(ans,_tm[i]);
cout<<ans;
*/
/*
//Y
cout<<_tm[4000300];
*/
return 0;
}
为什么使用 X 段可以 AC,使用 Y 段就会 WA 85?