VCOWCAR - Xe ô tô của bò
Tác giả: hieult
Ngôn ngữ: C++
#include <stdio.h>
//#include <conio.h>
long min(long a,long b)
{
if(a<b) return a;
else return b;
}
void quickSort(long A[],long lower,long upper)
{
long x = A[(lower + upper) / 2];
long i = lower;
long j = upper;
do{
while(A[i] > x)
i ++;
while (A[j] < x)
j --;
if (i <= j)
{
long tg=A[i];
A[i]=A[j];
A[j]=tg;
i ++;
j --;
}
}while(i <= j);
if (j > lower)
quickSort(A, lower, j);
if (i < upper)
quickSort(A, i, upper);
}
main()
{
long n,m,d,l,s[50001],a[50001],b[50001],C[50001],KQ;
scanf("%ld %ld %ld %ld",&n,&m,&d,&l);
for(long i=1;i<=n;i++)
{
scanf("%ld",&s[i]);
if(d>0)
{
if(s[i]<l)
a[i]=-1;
else
a[i]=(s[i]-l)/d;
}
else
{
if(s[i]>=l)
a[i]=1000000;
else a[i]=-1;
}
}
KQ=n;
quickSort(a,1,n);
for(long i=1;i<=m;i++)
C[i]=1000000;
for(long i=1;i<=n;i++)
{
//printf("%ld ",a[i]);
C[(i-1)%m+1]=min(C[(i-1)%m+1]-1,a[i]);
if(C[(i-1)%m+1]<0)
{
KQ=i-1;
break;
}
}
printf("%ld",KQ);
//getch();
}