Pagini recente » Cod sursa (job #8638) | Cod sursa (job #1609391) | Cod sursa (job #2760459) | Cod sursa (job #572132) | Cod sursa (job #2358612)
#include <fstream>
#define NMAX 1000*1000
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
double pante[NMAX];
struct coord
{
int x;
int y;
};
coord v[1005];
const double INF=2000000000;
const double eps=1.0e-12;
int n, nrp;
int total;
double panta(coord p1, coord p2)
{
double dif=p2.x-p1.x;
if(dif<0)
{
dif=-dif;
}
if(dif<eps)
{
return INF;
}
return (double)(p2.y-p1.y)/(p2.x-p1.x);
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>v[i].x>>v[i].y;
}
fin.close();
for(int i=1; i<n; i++)
{
for(int j=i+1; j<=n; j++)
{
double p=panta(v[i], v[j]);
nrp++;
pante[nrp]=p;
}
}
sort(pante+1, pante+nrp+1);
/*
for(int i=1; i<=n; i++)
{
fout<<pante<<" ";
}
*/
int l=1;
for(int i=2; i<=nrp; i++)
{
if(fabs(pante[i-1]-pante[i])<eps)
{
l++;
}
else
{
total+=(l-1)*l/2;
l=1;
}
}
if(l>1)
{
total+=(l-1)*l/2;
}
fout<<total;
return 0;
}