Pagini recente » Cod sursa (job #2367305) | Cod sursa (job #623482) | Cod sursa (job #65463) | Cod sursa (job #280274) | Cod sursa (job #1139022)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
#define eps 0.001
const double co=0.5;
const double si=sqrt(3)/2;
bool mic(double d1,double d2)
{
if (d1+eps<d2)
return true;
return false;
}
bool fless(pair <double,double> p1, pair <double,double> p2)
{
if (mic(p1.first,p2.first))
return true;
if (mic(p1.second,p2.second))
return true;
return false;
}
int n,i,i1,k;
double x,y,xx1,yy1,xx2,yy2;
vector <pair <double,double> > v;
double xrot,yrot;
void rot(double xo,double yo,double x,double y)
{
xrot=yrot=0;
xrot=xo+(x-xo)*co-(y-yo)*si;
yrot=yo+(x-xo)*si+(y-yo)*co;
}
int main(void)
{
FILE * f;
f=fopen("triang.in","r");
ofstream g("triang.out");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
{
fscanf(f,"%lf%lf",&x,&y);
v.push_back(make_pair(x,y));
}
sort(v.begin(),v.end(),&fless);
for (i=0;i<n;i++)
for (i1=i+1;i1<n;i1++)
{
xx1=v[i].first;
yy1=v[i].second;
xx2=v[i1].first;
yy2=v[i1].second;
rot(xx1,yy1,xx2,yy2);
if ((lower_bound(v.begin(),v.end(),make_pair(xrot,yrot),&fless))!=(v.end()))
k++;
}
g<<k/2;
g.close();
return 0;
}