Pagini recente » Cod sursa (job #2101391) | Cod sursa (job #1476686) | Cod sursa (job #1393354) | Cod sursa (job #3292754) | Cod sursa (job #2907785)
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream f("triang.in");
ofstream g("triang.out");
double t,s,xc,yc;
struct cv{double x,y;}v[1501];
int n,i,j,nr;
int comp(cv a,cv b)
{
return (fabs(a.x-b.x)<0.001 && a.y<b.y || a.x<b.x);
}
void cautbinar(double xc,double yc)
{
int p=1,u=n,m;
while(p<=u)
{
m=(p+u)/2;
if(fabs(v[m].x-xc)<0.001 && fabs(v[m].y-yc)<0.001) {nr++;return;}
else if(v[m].x>xc || fabs(v[m].x-xc)<0.001 && v[m].y>yc) u=m-1;
else p=m+1;
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++) f>>v[i].x>>v[i].y;
sort(v+1,v+n+1,comp);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
{
t=v[j].x-v[i].x;
s=v[j].y-v[i].y;
xc=v[i].x+t/2-sqrt(3)/2*s;
yc=v[i].y+sqrt(3)/2*t+s/2;
cautbinar(xc,yc);
xc=v[i].x+t/2+sqrt(3)/2*s;
yc=v[i].y-sqrt(3)/2*t+s/2;
cautbinar(xc,yc);
}
g<<nr/3;
return 0;
}