Pagini recente » Cod sursa (job #1595245) | Cod sursa (job #2160286) | Cod sursa (job #2713931) | Cod sursa (job #1458655) | Cod sursa (job #2140674)
#include <fstream>
#include <stdlib.h>
#define nmax 50005
using namespace std;
fstream f1("tribute.in", ios::in);
fstream f2("tribute.out", ios::out);
int n, dx, dy, xmed, ymed, rez=2000000001;
struct obiec
{
int x, y;
}v[nmax];
void solutie(int vx1, int vx2, int vy1, int vy2)
{
int i, mini, dist=0;
for(i=1; i<=n; i++)
{
if(((vx1 <=v[i].x)&&(v[i].x<= vx2))&&((vy1<= v[i].y)&&(v[i].y<= vy2))) ;
else if((vx1 <=v[i].x)&&(v[i].x<= vx2))
dist+=(min(abs(v[i].y-vy1), abs(v[i].y-vy2)));
else if((vy1<= v[i].y)&&(v[i].y<= vy2))
dist+=(min(abs(v[i].x-vx1), abs(v[i].x-vx2)));
else
{
mini=abs(v[i].x- vx1)+abs(v[i].y- vy1);
mini=min(mini, abs(v[i].x- vx1)+abs(v[i].y- vy2));
mini=min(mini, abs(v[i].x- vx2)+abs(v[i].y- vy1));
mini=min(mini, abs(v[i].x- vx2)+abs(v[i].y- vy2));
dist+=mini;
}
}
rez=min(dist, rez);
}
void citire()
{
int i, j, vx1, vx2, vy1, vy2, mm[4]={0, 1, -1};
f1>>n>>dx>>dy;
for(i=1; i<=n; i++)
{
f1>>v[i].x>>v[i].y;
xmed+=v[i].x;
ymed+=v[i].y;
}
xmed/=n;
ymed/=n;
for(i=0; i<=2; i++)
for(j=0; j<=2; j++)
{
vx1=mm[i]+xmed-dx/2; vy1=mm[j]+ymed-dy/2;
vx2=vx1+dx; vy2=vy1+dy;
solutie(vx1, vx2, vy1, vy2);
}
}
int main()
{
citire();
f2<<rez;
return 0;
}