Pagini recente » Cod sursa (job #2699284) | Cod sursa (job #2973358) | Cod sursa (job #2889467) | Cod sursa (job #1946365) | Cod sursa (job #70659)
Cod sursa(job #70659)
#include<stdio.h>
#include<math.h>
int n,nr;
struct vec{
float x,y;
}a[1000],aux;
void read()
{
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%f %f",&a[i].x,&a[i].y);
}
void sort()
{
int i,ok;
do
{
ok=0;
for(i=0;i<n-1;i++)
if(a[i].x>a[i+1].x)
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
ok=1;
}
}while(ok);
}
float abs(float x)
{
if(x<0)
return -x;
return x;
}
void solve()
{
int i,j,li,ls,ok,k;
float x0,y0,x1,y1,x2,y2,x3,y3,mijx,mijy,dx,dy;
sort();
for(i=0;i<n-1;i++)
{
x0=a[i].x;
y0=a[i].y;
for(j=i+1;j<n;j++)
{
x1=a[j].x;
y1=a[j].y;
mijx=(x0+x1)/2;
mijy=(y0+y1)/2;
dx=abs(mijx-x0);
dy=abs(mijy-y0);
if(y0<y1)
{
x2=mijx+dy;
y2=mijy-dx;
x3=mijx-dy;
y3=mijy+dx;
}
else
{
x2=mijx-dy;
y2=mijy-dx;
x3=mijx+dy;
y3=mijy+dx;
}
li=0;
ls=n-1;
ok=1;
while(li<=ls&&ok)
{
k=(li+ls)/2;
if(floor(a[k].x)==floor(x2)&&a[k].y==y2)
ok=0;
else
if(a[k].x<x2)
li=k+1;
else
ls=k-1;
}
if(ok==0)
nr++;
li=0;
ls=n-1;
ok=1;
while(li<=ls&&ok)
{
k=(li+ls)/2;
if(floor(a[k].x)==floor(x3)&&a[k].y==y3)
ok=0;
else
if(a[k].x<x3)
li=k+1;
else
ls=k-1;
}
if(ok==0)
nr++;
}
}
printf("%d\n",nr);
}
int main()
{
freopen("patrate3.in","r",stdin);
freopen("patrate3.out","w",stdout);
read();
solve();
return 0;
}