Cod sursa(job #530147)
#include<fstream.h>
#include<iomanip.h>
#include<math.h>
ofstream g("triang.out");
int i,j,n,m,nr=0;
struct tri
{
float x,y;
};
tri a[1501],aux;
int rez(float xc,float yc)
{
int st=1,dr=n,mij,ok=0;
while(st<dr&&!ok)
{
mij=(st+dr)/2;
if(a[mij].x==xc&&a[mij].y==yc)
ok=1;
else
if(a[mij].x<xc)
st=mij+1;
else
dr=mij-1;
}
if(ok)
return 1;
return 0;
}
void cauta(int i,int j)
{
float xm,ym,xc,yc;
float l;
l=sqrt(pow((a[i].x-a[j].x),2)+pow((a[i].y-a[j].y),2));
xm=(a[j].x-a[i].x)/2,ym=(a[j].y-a[j].x)/2;
xc=xm;
yc=sqrt(pow(l,2)-pow(l/2,2));
if(rez(xc,yc))
nr++;
if(rez(xc,-yc))
nr++;
}
int main()
{
ifstream f("triang.in");
f>>n;
for(i=1;i<=n;i++)
f>>a[i].x>>a[i].y;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i].x>a[j].x)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
cauta(i,j);
g<<nr;
return 0;
}