Pagini recente » Cod sursa (job #321183) | Cod sursa (job #1547470) | Cod sursa (job #1827077) | Cod sursa (job #1667211) | Cod sursa (job #2330418)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream f ("pachete.in");
ofstream g ("pachete.out");
struct loc
{
long long int x,y;
int z;
};
loc s[50001],init;
void citire (long int &n,loc s[50001])
{
long int i;
f>>n;
f>>init.x;
f>>init.y;
init.z=0;
for(i=1;i<=n;i++)
{
f>>s[i].x;
f>>s[i].y;
s[i].z=0;
}
}
int verif (long int n,loc s[50001])
{
long int i;
for(i=1;i<=n;i++) if(s[i].z==0) return 0;
return 1;
}
void ordonare (long int n,loc s[50001])
{
long long int i,j,aux;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(llabs(init.x-s[i].x)+llabs(init.y-s[i].y)<llabs(init.x-s[j].x)+llabs(init.y-s[j].y))
{
aux=s[i].x;
s[i].x=s[j].x;
s[j].x=aux;
aux=s[i].y;
s[i].y=s[j].y;
s[j].y=aux;
aux=s[i].z;
s[i].z=s[j].z;
s[j].z=aux;
}
}
int prog (long int n,loc s[50001])
{
long long int a,b,i=1,j,c;
int dr=0,ok;
ordonare(n,s);
while(verif(n,s)==0)
{
i=1;
while(s[i].z==1) i++;
a=llabs(init.x-s[i].x)+llabs(init.y-s[i].y);
ok=0;
for(j=1;(j<=n)&&(ok==0);j++)
{
if(s[j].z==0) if(i!=j)
{
b=llabs(init.x-s[j].x)+llabs(init.y-s[j].y);
c=llabs(s[i].x-s[j].x)+llabs(s[i].y-s[j].y);
if(llabs(a-b)>=c)
{
s[j].z=1;
s[i].z=1;
dr++;
ok=1;
}
}
}
if(ok==0)
{
s[i].z=1;// cout<<i<<" ";
dr++;
}
}
g<<dr;
}
int main()
{
long int n;
citire(n,s);
prog(n,s);
}