Pagini recente » Cod sursa (job #67634) | Cod sursa (job #1382722) | Cod sursa (job #13583) | Cod sursa (job #2582400) | Cod sursa (job #1677205)
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstdlib>
using namespace std;
struct eu{double x,y;};
eu v[1501],m,p1,p2;
int n,i,j,k,nr;
double l,hh;
bool sorting(eu a,eu b)
{
if(a.x<b.x||a.x==b.x&&a.y<b.y)
return 1;
return 0;
}
int main ()
{
freopen("triang.in","r",stdin);
freopen("triang.out","w",stdout);
scanf("%d",&n);
hh=sqrt(3);
for(i=1;i<=n;i++)
scanf("%lf%lf",&v[i].x,&v[i].y);
sort(v+1,v+n+1,sorting);
for(i=1;i<n-1;i++)
for(j=i+1;j<=n-1;j++)
{
m.x=(v[i].x+v[j].x)/2;
m.y=(v[i].y+v[j].y)/2;
l=sqrt((v[i].y-v[j].y)*(v[i].y-v[j].y)+(v[i].x-v[j].x)*(v[i].x-v[j].x));
double panta;
if(v[i].y==v[j].y)
{
p1.x=m.x;
p1.y=m.y+l*hh/2;
p2.x=m.x;
p2.y=m.y-l*hh/2;
}
else
{
panta=(v[i].x-v[j].x)/(v[i].y-v[j].y);
panta=(-1)/panta;
double a,b,a1,b1;
b=sqrt(3*l*l/(4*(panta*panta+1)));
b1=-b;
a=b*panta;
a1=b1*panta;
p1.x=m.x+a;
p1.y=m.y+b;
p2.x=m.x+a1;
p2.y=m.y-b;
}
int l1=j+1,l2=n,mid,o=0;
while(l1<=l2)
{
mid=(l1+l2)/2;
if(v[mid].x==p1.x&&v[mid].y==p1.y)
{
o=mid;
break;
}
if(v[mid].x<p1.x||v[mid].x==p1.x&&v[mid].y<p1.y)
l1=mid+1;
else
l2=mid-1;
}
if(o!=0)
nr++;
l1=j+1;
l2=n;
o=0;
while(l1<=l2)
{
mid=(l1+l2)/2;
if(v[mid].x==p2.x&&v[mid].y==p2.y)
{
o=mid;
break;
}
if(v[mid].x<p2.x||v[mid].x==p2.x&&v[mid].y<p2.y)
l1=mid+1;
else
l2=mid-1;
}
if(o!=0)
nr++;
}
printf("%d",nr);
return 0;
}