Pagini recente » Cod sursa (job #1334614) | Cod sursa (job #1571289) | Cod sursa (job #2007277) | Cod sursa (job #1683387) | Cod sursa (job #489080)
Cod sursa(job #489080)
#include <stdio.h>
int v[2][50001],n,dx,dy,minx,miny,bef,aft,s;
void quicksort(int l,int r,int z)
{
int i=l,j=r,aux,mid=v[z][(l+r)/2];
while (i <= j)
{
while (v[z][i]<mid) i++;
while (v[z][j]>mid) j--;
if (i <= j)
{
aux=v[z][i];v[z][i]=v[z][j];v[z][j]=aux;
aux=v[1-z][i];v[1-z][i]=v[1-z][j];v[1-z][j]=aux;
i++;
j--;
}
}
if (l<j) quicksort(l,j,z);
if (i<r) quicksort(i,r,z);
}
int main()
{
int l,r,i;
minx=625000000;miny=625000000;
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",&v[0][i],&v[1][i]);
++dx;++dy;
quicksort(1,n,0);
bef=0;aft=1;
l=v[0][1];r=l+dx-1;
while (v[0][aft]<=r) ++aft;
for (i=aft;i<=n;i++) s+=v[0][i]-r;
while (r<v[0][n])
{
++l;++r;
s+=bef;
s=s-n+aft-1;
while (v[0][bef+1]<l) {++bef;++s;}
while ((v[0][aft]<=r)&&(aft<n)) ++aft;
if (s<minx) minx=s;
}
if (s<minx) minx=s;
quicksort(1,n,1);
bef=0;aft=1;s=0;
l=v[1][1];r=l+dy-1;
while (v[1][aft]<=r) ++aft;
for (i=aft;i<=n;i++) s+=v[1][i]-r;
while (r<v[1][n])
{
++l;++r;
s+=bef;
s=s-n+aft-1;
while (v[1][bef+1]<l) {++bef;++s;}
while ((v[1][aft]<=r)&&(aft<n)) ++aft;
if (s<miny) miny=s;
}
if (s<miny) miny=s;
printf("%d",minx+miny);
return 0;
}