Describe:贪心,保证至少一条路牛的数量最多
code:
#include<bits/stdc++.h>
using namespace std;
long long n,m,d,l,s[100010];
long long tot=1,f,i=1,ans;
inline long long read(){
long long ret=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9') {if (ch=='-') f=-f;ch=getchar();}
while (ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar();
return ret*f;
}
inline void write(long long x){
if(x<0){putchar('-'),write(-x);return;}
if(x/10)write(x/10);putchar(x%10+'0');
}
int main(){
freopen("cowcar.in","r",stdin);
freopen("cowcar.out","w",stdout);
cin>>n>>m>>d>>l;
for(int ss=1;ss<=n;ss++)s[ss]=read();
sort(s+1,s+n+1);
while(i<=n){
if(s[i]-f*d<l){ //Bye Bye
i++;continue;
}
if(n-i+1<=m){ //Let it in
ans+=n-i+1;break;
}
ans+=m,i+=m,f++;
}
write(ans);
return 0;
}