Pagini recente » Cod sursa (job #846162) | Cod sursa (job #2416291) | Cod sursa (job #2380115) | Cod sursa (job #1444413) | Cod sursa (job #1102)
Cod sursa(job #1102)
#include <stdio.h>
#include <stdlib.h>
#define nmax 1510
#define err 0.001
struct pct
{
double x,y;
};
int n,i,j,sol;
double x,y;
pct a[nmax],tmp;
int fc(const void *aa,const void *bb)
{
if ((*(pct*)aa).x-(*(pct*)bb).x>err)
return 1;
if ((*(pct*)bb).x-(*(pct*)aa).x>err)
return -1;
if ((*(pct*)aa).y-(*(pct*)bb).y>err)
return 1;
if ((*(pct*)bb).y-(*(pct*)aa).y>err)
return -1;
return 0;
}
int main()
{
freopen("triang.in","r",stdin);
freopen("triang.out","w",stdout);
scanf("%d",&n);
for (i=0;i<n;i++)
scanf("%lf%lf",&x,&y),a[i].x=x,a[i].y=y;
qsort((void*)a,n,sizeof(a[0]),fc);
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
{
tmp.x=(a[j].x-a[i].x)*0.5-(a[j].y-a[i].y)*1.7320508*0.5+a[i].x;
tmp.y=(a[j].x-a[i].x)*1.7320508*0.5+(a[j].y-a[i].y)*0.5+a[i].y;
if (bsearch(&tmp,(void*)a,n,sizeof(a[0]),fc))
sol++;
tmp.x=(a[j].x-a[i].x)*0.5+(a[j].y-a[i].y)*1.7320508*0.5+a[i].x;
tmp.y=-(a[j].x-a[i].x)*1.7320508*0.5+(a[j].y-a[i].y)*0.5+a[i].y;
if (bsearch(&tmp,(void*)a,n,sizeof(a[0]),fc))
sol++;
}
printf("%d\n",sol/3);
return 0;
}