Pagini recente » Cod sursa (job #700107) | Cod sursa (job #2373932) | Cod sursa (job #1758074) | Cod sursa (job #3210692) | Cod sursa (job #2557959)
#include <algorithm>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("triang.in");
ofstream g("triang.out");
int n,nr,i,j;
struct dad
{
double x,y;
}v[1600];
double xc,yc,s,t;
int compare(dad a, dad b)
{
return a.x<b.x || (a.x==b.x && a.y<b.y);
}
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,compare);
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;
}