Pagini recente » Cod sursa (job #2639984) | Cod sursa (job #2112701) | Cod sursa (job #2475784) | Cod sursa (job #452619) | Cod sursa (job #2887384)
#include <fstream>
#include <cmath>
#include <algorithm>
#define prec 0.001
using namespace std;
ifstream fin("triang.in");
ofstream fout("triang.out");
struct kys {double x,y;} a[1501];
int n,nr;
double k,s,xc,yc;
bool compare(kys a,kys b)
{
return(fabs(a.x-b.x)<prec&&a.y<b.y||a.x<b.x);
}
void cauta(double xc,double yc)
{
int st,dr,mid;
st=1;dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(fabs(a[mid].x-xc)<prec&&fabs(a[mid].y-yc)<prec)
{
nr++;
return;
}
else if(a[mid].x>xc||fabs(a[mid].x-xc)<prec&&a[mid].y>yc)dr=mid-1;
else st=mid+1;
}
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)fin>>a[i].x>>a[i].y;
sort(a+1,a+n+1,compare);
for(int i=1; i<=n; i++)
{
for(int j=i+1; j<=n; j++)
{
k=a[j].x-a[i].x;
s=a[j].y-a[i].y;
xc=a[i].x+k/2-sqrt(3)/2*s;
yc=a[i].y+sqrt(3)/2*k+s/2;
cauta(xc,yc);
xc=a[i].x+k/2+sqrt(3)/2*s;
yc=a[i].y-sqrt(3)/2*k+s/2;
cauta(xc,yc);
}
}
fout<<nr/3;
return 0;
}