Pagini recente » Cod sursa (job #2562374) | Cod sursa (job #3152709) | Cod sursa (job #2972149) | Cod sursa (job #1548379) | Cod sursa (job #1403694)
#include <cstdio>
using namespace std;
struct punct
{
double x;
double y
};
double xi,yi,xf,yf,d;
int nrt;
punct a[1501];
bool cmp(punct a, punct b)
{
if (a.x<b.x) return true;
else
{
if (a.x>b.x) return false;
else
{
if (a.y<b.y) return true;
else return false;
}
}
}
int cautare_binara(int xf, int yf, int j)
{
int st=j+1;
int dr=n;
int mij=(st+dr)/2;
while (a[mij].x!=xf && a[mij].y!=yf && st<=dr)
{
if (a[mij].x>xf) mij=dr-1;
else if (a[mij]<xf) mij=st+1;
else
{
if (a[mij].y>yf) mij=dr-1;
else if (a[mij]<yf) mij=st+1;
}
}
}
int main()
{
freopen("triang.in","r",stdin);
freopen("triang.out","w",stdout);
scanf("%d\n",&n);
nrt=0;
for (i=1; i<=n; i++) scanf("%llf %llf\n",&a[i].x,&a[i].y);
sort(a+1,a+n+1,cmp);
for (i=1; i<=n-2; i++) for (j=i+1; j<=n-1; j++)
{
xi=(a[j].x-a[i].x)/2+sqrt(1.0*3)(a[j].y-a[i].y)/2;
yi=(a[j].y-a[i].y)/2-sqrt(1.0*3)(a[j].x-a[i].x)/2;
d=sqrt(1.0*(a[j].x-a[i].x)*(a[j].x-a[i].x)+1.0*(a[j].y-a[i].y)*(a[j].y-a[i].y));
xf=xi*d+a[i].x;
yf=yi*d+a[i].y;
if (cautare_binara(xf,yf,j)!=-1) nrt++;
}
return 0;
}