Pagini recente » Cod sursa (job #1396094) | Cod sursa (job #2348613) | Cod sursa (job #749009) | Cod sursa (job #1941828) | Cod sursa (job #1047418)
#include<stdio.h>
#include<algorithm>
#define er 0.0001
using namespace std;
FILE*f=fopen("patrate3.in","r");
FILE*g=fopen("patrate3.out","w");
int n;
double abs1(double a)
{
if(a<0)
return -a;
return a;
}
struct punct
{
double x,y;
} v[1001],p1,p2;
int cmp(punct a,punct b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
int cautbin(punct x)
{
int p=1;
int u=n;
int m;
while(p<=u)
{
m=(p+u)/2;
if(cmp(x,v[m]))
u=m-1;
else
p=m+1;
if(abs1(v[m].x-x.x)<er&&abs1(v[m].y-x.y)<er)
return 1;
}
return 0;
}
int main()
{
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
fscanf(f,"%lf%lf",&v[i].x,&v[i].y);
sort(v+1,v+n+1,cmp);
int nr=0;
for(int i=1;i<n;++i)
for(int j=i+1;j<=n;++j)
{
double mijx,mijy,dx,dy,x1,x2,y1,y2;
mijx=(v[i].x+v[j].x)/2;
mijy=(v[i].y+v[j].y)/2;
dx=abs1(mijx-v[i].x);
dy=abs1(mijy-v[i].y);
p1.y=mijy-dx;
p2.y=mijy+dx;
if(v[i].y<v[j].y)
{
p1.x=mijx+dy;
p2.x=mijx-dy;
if(cautbin(p1)&&cautbin(p2))
++nr;
}
else
{
p1.x=mijx-dy;
p2.x=mijx+dy;
if(cautbin(p1)&&cautbin(p2))
++nr;
}
}
fprintf(g,"%d",nr/2);
fclose(f);
fclose(g);
return 0;
}