Pagini recente » Cod sursa (job #2816205) | Cod sursa (job #1700482) | Cod sursa (job #371108) | Cod sursa (job #1893584) | Cod sursa (job #1520670)
#include <fstream>
#include <math.h>
#include <algorithm>
//#include <iostream>
using namespace std;
double laturi[1125751];
class punct
{
public:
double x,y;
} v[1502];
int main()
{
int i,j,l, mid, b, e, n, nr=0;
double s;
long approx;
ifstream in ("triang.in");
ofstream out ("triang.out");
in>>n;
l=n*(n-1)/2;
for(i=0;i<n;i++)
in>>v[i].x>>v[i].y;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
approx=1000*sqrt((v[i].x-v[j].x) * (v[i].x-v[j].x) + (v[i].y-v[j].y) * (v[i].y-v[j].y));
//cout<<approx<<endl;
laturi[nr]=(double)approx/1000;
nr++;
}
/*for(i=0;i<l;i++)
cout<<laturi[i]<<" ";
cout<<endl;*/
sort(laturi, laturi+l);
/*for(i=0;i<l;i++)
cout<<laturi[i]<<" ";*/
nr=0;
for(i=1;i<n-1;i++)
for(j=i+1;j<n;j++)
if(max(laturi[i],laturi[j]) - min (laturi[i],laturi[j]) <=0.001)
{
s=(laturi[i]+laturi[j])/2;
b=i; e=l-1;
while(b<e)
{
mid=(b+e)/2;
if(laturi[mid]<=s)
b=mid+1;
else
e=mid;
if(max(laturi[b],s) - min (laturi[b],s) <=0.001)
nr++;
}
}
out<<nr;
in.close();
out.close();
return 0;
}