Pagini recente » Cod sursa (job #123470) | Cod sursa (job #492396) | Cod sursa (job #1911564) | Cod sursa (job #491889) | Cod sursa (job #396735)
Cod sursa(job #396735)
#include<stdio.h>
#include<string.h>
#define INF 2500000005
#define ll long long
struct trib
{
int x,y;
};
int n,dx,dy,st;
int maxv,dr;
int f[50001];
trib v[50001];
ll di,s1=INF,s2=INF;
int main ()
{
int i;
freopen("tribute.in","r",stdin);
freopen("tribute.out","w",stdout);
scanf("%d%d%d",&n,&dx,&dy);
dx++;dy++;
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];
}
//////////////////////////////////////
memset(f,0,sizeof(f));
di=0;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("%lld\n",s1+s2);
return 0;
}