Pagini recente » Cod sursa (job #786564) | Cod sursa (job #1574138) | Cod sursa (job #2894976) | Cod sursa (job #1291491) | Cod sursa (job #1572384)
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#define nmax 50000
using namespace std;
struct eu{int x,y;};
eu vcc[50001];
int v[50001],vc[50001],i,j,n,m,x,y,lin,col,lm,cm,s1,s2;
int main ()
{
freopen("tribute.in","r",stdin);
freopen("tribute.out","w",stdout);
scanf("%d%d%d",&n,&lin,&col);
for(i=1;i<=n;i++)
{
scanf("%d%d",&vcc[i].x,&vcc[i].y);
v[i]=vcc[i].x;
vc[i]=vcc[i].y;
s1=s1+vcc[i].x;
s2=s2+vcc[i].y;
}
int difmax=0,dm1=0,poz,poz1,poz2,poz3;
sort(vc+1,vc+n+1);
sort(v+1,v+n+1);
poz=v[n/2];
poz1=vc[n/2];
poz-=lin/2;
poz1-=col/2;
int min=2000000000,min1=200000000;
int k1=poz,k2=poz1;
for(j=k1-100;j<=k1+100;j++)
{
int s=0;
poz=j;
poz2=poz+lin;
poz3=poz1+col;
for(i=1;i<=n;i++)
{
if(vcc[i].x<=poz)
s+=poz-vcc[i].x;
if(vcc[i].x>=poz2)
s+=vcc[i].x-poz2;
}
if(s<min)
min=s;
}
for(int l=k2-100;l<=k2+100;l++)
{
int s=0;
poz1=l;
poz2=poz+lin;
poz3=poz1+col;
for(i=1;i<=n;i++)
{
if(vcc[i].y<=poz1)
s+=poz1-vcc[i].y;
if(vcc[i].y>=poz3)
s+=(-poz3+vcc[i].y);
}
if(s<min1)
min1=s;
}
printf("%d",min+min1);
return 0;
}