Pagini recente » Cod sursa (job #1526441) | Cod sursa (job #1241485) | Cod sursa (job #1080421) | Cod sursa (job #2189703) | Cod sursa (job #396730)
Cod sursa(job #396730)
#include<stdio.h>
#include<string.h>
#define INF 2000000001
struct trib
{
int x,y;
};
int n,dx,dy,st;
int maxv,dr;
int f[50001];
trib v[50001];
int di,s1,s2;
int main ()
{
int i;
freopen("tribute.in","r",stdin);
freopen("tribute.out","w",stdout);
scanf("%d%d%d",&n,&dx,&dy);
dx++;dy++;
s1=s2=INF;
for(i=1;i<=n;i++)
{
scanf("%d%d",&v[i].x,&v[i].y);
f[v[i].x]++;
if(v[i].x>=dx)
{
di+=v[i].x-dx+1;
dr++;
}
if(v[i].x>maxv)
maxv=v[i].x;
}
for(i=dx;i<=maxv;i++)
{
st+=f[i-dx];
di=di+st-dr;
if(di<s1)
s1=di;
dr-=f[i];
}
//////////////////////////////////////
/*st=dr=di=0;
for(i=1;i<=n;i++)
if(v[i].x>=dy)
{
di+=v[i].x-dy+1;
dr++;
}
for(i=dy;i<=maxv;i++)
{
st+=f[i-dy];
di=di+st-dr;
if(di<s1)
s1=di;
dr-=f[dy];
}*/
//////////////////////////////////////
memset(f,0,sizeof(f));
di=maxv=0;
dr=st=0;
for(i=1;i<=n;i++)
{
f[v[i].y]++;
if(v[i].y>=dy)
{
di+=v[i].y-dy+1;
dr++;
}
if(v[i].y>maxv)
maxv=v[i].y;
}
for(i=dy;i<=maxv;i++)
{
st+=f[i-dy];
di=di+st-dr;
if(di<s2)
s2=di;
dr-=f[i];
}
printf("%d\n",s1+s2);
return 0;
}