Pagini recente » Monitorul de evaluare | Cod sursa (job #1771247) | Istoria paginii runda/gr_4/clasament | Cod sursa (job #1886871) | Cod sursa (job #2237468)
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
const double eps=10e-14;
const double INF=2000000000;
struct POINT
{
int x,y;
};
double panta(POINT P1,POINT P2)
{
if(fabs(P2.x-P1.x)<eps)
return INF;
else
return (double)(P2.y-P1.y)/(P2.x-P1.x);
}
POINT P[1001];
double v[1000001];
int main()
{
int sortat,l=0,s=0,k=1,i,j,n;
double aux;
fin>>n;
for(i=1;i<=n;i++)
fin>>P[i].x>>P[i].y;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
l++;
v[l]=panta(P[i],P[j]);
}
do
{
sortat=1;
for(i=1;i<l;i++)
if(v[i]>v[i+1])
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
sortat=0;
}
}while(sortat==0);
for(i=2;i<=l;i++)
{
if(fabs(v[i]-v[i-1])<eps)
k++;
else
{
s=s+(k*(k-1))/2;
k=1;
}
}
fout<<s;
return 0;
}