Pagini recente » Cod sursa (job #298894) | Cod sursa (job #1729625) | Cod sursa (job #1110898) | Cod sursa (job #2859874) | Cod sursa (job #3220897)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream fin("triang.in");
ofstream fout("triang.out");
int n,nr;
const float e=0.001;
struct abc{
double x,y;
}a[1501];
int comp(abc a,abc b)
{
return fabs(a.x-b.x)<e && a.y<b.y || a.x<b.x;
}
int cautbin(float x,float y)
{
int st=1,dr=n;
while (st<=dr)
{
int mij=(st+dr)/2;
if (fabs(a[mij].x-x)<e && fabs(a[mij].y-y)<e) return 1;
else if (fabs(a[mij].x-x)<e && a[mij].y<y || a[mij].x<x) st=mij+1;
else dr=mij-1;
}
return 0;
}
int main()
{
fin>>n;
for (int i=1;i<=n;i++)
{
fin>>a[i].x>>a[i].y;
}
sort (a+1,a+n+1,comp);
for (int i=1;i<=n;i++)
for (int j=i+1;j<=n;j++)
{
double x2=a[j].x-a[i].x,y2=a[j].y-a[i].y,x3,y3;
x3=a[i].x+x2/2-sqrt(3)/2*y2;
y3=a[i].y+y2/2+sqrt(3)/2*x2;
if (cautbin(x3,y3)) nr++;
x3=a[i].x+x2/2+sqrt(3)/2*y2;
y3=a[i].y+y2/2-sqrt(3)/2*x2;
if (cautbin(x3,y3)) nr++;
}
fout<<nr/3;
return 0;
}