Pagini recente » Cod sursa (job #3329412) | Cod sursa (job #2084480) | Cod sursa (job #625995) | Cod sursa (job #447114) | Cod sursa (job #3351649)
#include <cmath>
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
const double INF=1e18;
const double eps=1e-11;
struct point{
int x, y;
};
double panta(point p1, point p2)
{
if(p1.x==p2.x) return INF;
return (double)(p2.y-p1.y)/(p2.x-p1.x);
}
point v[1005];
double pante[500*1005];
int main()
{
int n, i, j, nr=0;
if(!(fin>>n)) return 0;
for(i=1;i<=n;i++)
fin>>v[i].x>>v[i].y;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
pante[nr++]=panta(v[i],v[j]);
}
sort(pante,pante+nr);
int total=0;
int count=1;
for(i=1;i<nr;i++)
{
if(abs(pante[i]-pante[i-1])<eps)
{
count++;
}
else
{
total+=(count*(count-1))/2;
count=1;
}
}
total+=(count*(count-1))/2;
fout<<total<<endl;
fin.close(); fout.close();
return 0;
}