Cod sursa(job #1371196)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 3 martie 2015 19:51:46
Problema Tribute Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>

using namespace std;

int n,x,dx,dy,v[50006],st[50004],stt[50005],dr[50006],drr[50007],i,j,X[50006],Y[50005];

int sol(int a[],int d)
{
     int i,nr=0,minn=20000000;

     for(i=0;i<=50000;++i) v[i]=0;
     for(i=1;i<=n;++i) v[a[i]]++;

     st[0]=stt[0]=0;
     dr[50000]=drr[50000]=0;

 //    st[0]=v[0];
     for(i=1;i<=50000;++i)
     st[i]=st[i-1]+v[i-1];

     for(i=50000;i>=0;--i)
     dr[i]=dr[i+1]+v[i+1];

    //    stt[0]=st[0];
   //  for(i=1;i<=50000;++i)
  //   stt[i]=1LL*stt[i-1]+st[i];

     for(i=50000;i>=0;--i)
     drr[i]=drr[i+1]+dr[i];

     int k=0;
     for(i=0;i<=50000-d;++i)
     {
          k+=st[i];
          nr=k+drr[i+d];
          if(nr<minn) minn=nr;
     }

     return minn;
}

int main()
{
    freopen("tribute.in","r",stdin);
    freopen("tribute.out","w",stdout);

    scanf("%d%d%d",&n,&dx,&dy);

    for(i=1;i<=n;++i)
        scanf("%d%d",&X[i],&Y[i]);

    printf("%d\n",sol(X,dx)+sol(Y,dy));

    return 0;
}