Pagini recente » Cod sursa (job #396993) | Cod sursa (job #269201) | Cod sursa (job #1244816) | Cod sursa (job #2828301) | Cod sursa (job #448361)
Cod sursa(job #448361)
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
const char InFile[]="trapez.in";
const char OutFile[]="trapez.out";
const int MaxN=1005;
const double EPS=1e-10;
struct POINT
{
int x,y;
};
int fcmp(double a, double b)
{
if((a-b)<=EPS)return 0;
if(a<b)return -1;
return 1;
}
ifstream fin(InFile);
ofstream fout(OutFile);
POINT p[MaxN];
int n,nr,l;
vector<float> v;
int main()
{
fin>>n;
for(register int i=0;i<n;++i)
{
fin>>p[i].x>>p[i].y;
}
fin.close();
for(register int i=0;i<n;++i)
{
for(register int j=0;j<n;++j)
{
if(i!=j)
{
v.push_back(atan2((double)p[i].y-p[j].y,(double)p[i].x-p[j].x));
}
}
}
sort(v.begin(),v.end());
l=1;
for(register int i=1;i<(int)v.size();++i)
{
if(fcmp(v[i],v[i-1])==0)
{
++l;
}
else
{
nr+=((l-1)*l)/2;
l=1;
}
}
nr+=((l-1)*l)/2;
fout<<nr/2;
fout.close();
return 0;
}