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();
}    

Download