Pagini recente » Cod sursa (job #638184) | Cod sursa (job #2469519) | Cod sursa (job #2964729) | Cod sursa (job #569878) | Cod sursa (job #1152537)
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const double eps=1.e-4;
struct point
{
double x,y;
};
point v[1005];
int n;
bool cmp(point a,point b)
{
if(fabs(a.x-b.x)<eps)
return a.y<b.y;
return a.x<b.x;
}
bool bs(point p)
{
int st,dr,med;
st=1;
dr=n;
while (st<=dr)
{
med=(st+dr)/2;
if (fabs(v[med].x-p.x)<eps&&fabs(v[med].y-p.y)<eps)
return 1;
else
if (!cmp(p,v[med]))
st=med+1;
else
dr=med-1;
}
return 0;
}
bool valid(point a,point b)
{
point x,y;
x.x=a.x+a.y-b.y;
x.y=a.y+b.x-a.x;
y.x=a.y+b.x-b.y;
y.y=b.x+b.y-a.x;
if (bs(x)&&bs(y))
return 1;
return 0;
}
int main()
{
freopen("patrate3.in","r",stdin);
freopen("patrate3.out","w",stdout);
int s;
double x,y;
scanf("%d",&n);
for (register int i=1;i<=n;++i)
{
scanf("%lf%lf",&x,&y);
v[i].x=x;
v[i].y=y;
}
sort (v+1,v+n+1,cmp);
s=0;
for (register int i=1;i<=n;++i)
for (register int j=i+1;j<=n;++j)
s+=valid(v[i],v[j]);
printf("%d",s/2);
return 0;
}