Pagini recente » Cod sursa (job #869045) | Profil Ambasa | Monitorul de evaluare | Cod sursa (job #2004380)
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int nmax=1005;
const double eps=1e-9;
const double inf=1e9;
struct point
{
int x,y;
}p[nmax];
double pante[nmax*(nmax-1)/2];
int top;
inline bool cmp(double a,double b)
{
return a-b<=eps;
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d%d",&p[i].x,&p[i].y);
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
if(fabs(p[i].x-p[j].x)<=eps)
{
if(p[i].y-p[j].y <=eps)
pante[++top]=inf;
else
pante[++top]=-inf;
}
else
pante[++top]=(double)(p[j].y-p[i].y)/(p[j].x-p[i].x);
sort(pante+1,pante+top+1,cmp);
int cnt;
long long nrsol=0;
for(i=1,cnt=1;i<top;++i)
if(fabs(pante[i]-pante[i-1])<=eps)
cnt++;
else
nrsol+= 1LL*(cnt*(cnt-1)),cnt=1;
printf("%lld",nrsol/2);
}