Pagini recente » Cod sursa (job #3195711) | Cod sursa (job #2341511) | Cod sursa (job #2478579) | Cod sursa (job #3004541) | Cod sursa (job #1673711)
#include<cstdio>
int vl[50001];
int vc[50001];
int vv[50001];
int main()
{
int n,dx,dy,maxx,maxy,minx,miny,i,a,b,f,st,dr,min,j,s,t,min1,in,sf,e,dr1;
freopen("tribute.in","r",stdin);
freopen("tribute.out","w",stdout);
scanf("%d%d%d",&n,&dx,&dy);
maxx=maxy=-1;
minx=miny=999999;
s=t=0;
dr=dr1=0;
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
vl[a]++;///lini
vc[b]++;///coloane
if(a>dx-1)
dr++;
if(b>dy-1)
dr1++;
if(a>dx-1)
s=s+a-dx+1;
if(b>dy-1)
t=t+b-dy+1;
if(a>maxx)
maxx=a;
if(b>maxy)
maxy=b;
if(a<minx)
minx=a;
if(b<miny)
miny=b;
}
st=0;
in=0;
sf=dx-1;
e=s;
/*if(vl[sf+1]!=0)
{
dr-=vl[sf+1];///scad cate elem sunt pe linia care intra in secventa din elem din dreapta
}
if(vl[in-1]!=0)
{
st+=vl[in-1];///adun cate elem sunt pe linia care iese din secventa la elem din stanga
}*/
min=999999;
while(sf<=maxx)
{
if(vl[sf]!=0)
{
dr-=vl[sf];
}
if(vl[in-1]!=0)
{
st+=vl[in-1];
e+=vl[in-1];
}
vv[in]=e;
if(vv[in]<min)
min=vv[in];
in++;
sf++;
e-=dr;
e+=st;
/*in++;
sf++;
e-=dr;///scad cate unu pentru fiecare punct din dreapta
e+=st;///adun cate unu pentru fiecare punct din stanga
if(vl[sf-1]!=0)
{
dr-=vl[sf-1];///scad cate elem sunt pe linia care intra in secventa din elem din dreapta
}
if(vl[in-1]!=0)
{
st+=vl[in-1];///adun cate elem sunt pe linia care iese din secventa la elem din stanga
}
vv[in]+=e;
if(vl[sf+1]!=0)
{
dr-=vl[sf+1];///scad cate elem sunt pe linia care intra in secventa din elem din dreapta
}
if(vl[in-1]!=0)
{
st+=vl[in-1];///adun cate elem sunt pe linia care iese din secventa la elem din stanga
}*/
/*in++;
sf++;
e-=dr;///scad cate unu pentru fiecare punct din dreapta
e+=st;///adun cate unu pentru fiecare punct din stangas
vv[in]+=e;*/
}
st=0;
dr=dr1;
in=0;
sf=dy-1;
e=t;
min1=999999;
/*if(vl[sf+1]!=0)
{
dr-=vl[sf+1];///scad cate elem sunt pe linia care intra in secventa din elem din dreapta
}
if(vl[in-1]!=0)
{
st+=vl[in-1];///adun cate elem sunt pe linia care iese din secventa la elem din stanga
}*/
while(sf<=maxy)
{
if(vc[sf]!=0)
{
dr-=vc[sf];
}
if(vc[in-1]!=0)
{
st+=vc[in-1];
e+=vc[in-1];
}
vv[in]=e;
if(vv[in]<min1)
min1=vv[in];
in++;
sf++;
e-=dr;
e+=st;
/*in++;
sf++;
e-=dr;///scad cate unu pentru fiecare punct din dreapta
e+=st;///adun cate unu pentru fiecare punct din stanga
if(vl[sf-1]!=0)
{
dr-=vl[sf-1];///scad cate elem sunt pe linia care intra in secventa din elem din dreapta
}
if(vl[in-1]!=0)
{
st+=vl[in-1];///adun cate elem sunt pe linia care iese din secventa la elem din stanga
}
vv[in]+=e;
if(vv[in]<min && vv[in]!=0)
min=vv[in];
if(vc[sf+1]!=0)
{
dr-=vc[sf+1];///scad cate elem sunt pe linia care intra in secventa din elem din dreapta
}
if(vc[in-1]!=0)
{
st+=vc[in-1];///adun cate elem sunt pe linia care iese din secventa de elem din stanga
}*/
/*in++;
sf++;
e-=dr;///scad cate unu pentru fiecare punct din dreapta
e+=st;///adun cate unu pentru fiecare punct din stangas
vv[in]+=e;
if(vv[in]<min)
min=vv[in];*/
}
printf("%d\n",min+min1);
return 0;
}