Pagini recente » Cod sursa (job #1375756) | Cod sursa (job #533886) | Cod sursa (job #339562) | Cod sursa (job #786815) | Cod sursa (job #2621720)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("trapez.in");
ofstream out("trapez.out");
long x[1001],y[1001],n,k,cn=1,nr;
double pante[600001];
int main() {
in>>n;
for(int i=0;i<n;i++)
in>>x[i]>>y[i];
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(x[i]!=x[j]*(-1)) //verificam ca abscisele sa nu fie opuse(/0)
pante[k++]=(double)(y[j]-y[i])/(x[j]-x[i]);
sort(pante,pante+k);
pante[-1]=-10000000;
for(int i=0;i<=k;i++)
if(pante[i]==pante[i-1])
cn++; //daca au pante egale sunt paralele
else{
nr+=(cn*(cn-1))/2; //combinari de cn luate cate 2
cn=1; //resetam
}
nr+=(cn*(cn-1))/2;
out<<nr;
return 0;
}