Pagini recente » Cod sursa (job #1051587) | Cod sursa (job #793418) | Cod sursa (job #146944) | Cod sursa (job #672295)
Cod sursa(job #672295)
#include<cstdio>
struct stoica{
long long x,y;
};
stoica coord[50001];
long long fx[50001],fy[50001],sx[50001],sy[50001],spartx[50001],sparty[50001];
int main()
{
freopen("tribute.in","r",stdin);
freopen("tribute.out","w",stdout);
long long min=2500000000,n,dx,dy,i,s=0;
scanf("%lld%lld%lld",&n,&dx,&dy);
for(i=1;i<=n;i++)
{
scanf("%lld%lld",&coord[i].x,&coord[i].y);
fx[coord[i].x]++;
fy[coord[i].y]++;
if(coord[i].x>dx)
sx[0]+=coord[i].x-dx;
if(coord[i].y>dy)
sy[0]+=coord[i].y-dy;
}
for(i=1;i<=50000;i++)
{
spartx[i]=spartx[i-1]+fx[i-1];
sparty[i]=sparty[i-1]+fy[i-1];
}
for(i=1;i<=50000-dx;i++)
{
//fx[0]+=fx[i-1];
sx[i]=sx[i-1]+spartx[i];
sx[i]-=n-spartx[i+dx];
}
for(i=1;i<=50000;i++)
if(sx[i]>0 && sx[i]<min)
min=sx[i];
s+=min;
for(i=1;i<=50000-dy;i++)
{
//fy[0]+=fy[i-1];
sy[i]=sy[i-1]+sparty[i];
sy[i]-=n-sparty[i+dy];
}
min=2500000000;
for(i=1;i<=50000;i++)
if(sy[i]>0 && sy[i]<min)
min=sy[i];
s+=min;
printf("%lld",s);
return 0;
}