Pagini recente » Cod sursa (job #3042209) | Cod sursa (job #2106065) | Cod sursa (job #3146791) | Cod sursa (job #1370165) | Cod sursa (job #3279302)
#include <stdio.h>
#define NMAX 1000*1000
#include <cmath>
#include <algorithm>
using namespace std;
double pante[NMAX];
int n,nrp,totalt;
FILE *fin,*fout;
struct puncte
{
int x;
int y;
} v[1005];
const double inf=20000000000;
const double eps=1.0e-12;
double panta(puncte a,puncte b)
{
double dif=(double)a.x-b.x;
if(dif<0)
{
dif=-dif;
}
//fabs(a.x,b.x);
if(dif<eps)
{
return inf;
}
return (double)(a.y-b.y)/(a.x-b.x);
}
int main()
{
fin=fopen("trapez.in","r");
fout=fopen("trapez.out","w");
fscanf(fin,"%d",&n);
for(int i=1; i<=n; i++)
{
fscanf(fin,"%d %d",&v[i].x,&v[i].y);
}
fclose(fin);
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);
int l=1;
for(int i=2; i<=nrp; i++)
{
if(fabs(pante[i-1]-pante[i])<eps)
{
l++;
}
else
{
totalt+=(l-1)*l/2;
l=1;
}
}
if(l>1)
{
totalt+=(l-1)*l/2;
}
fprintf(fout,"%d",totalt);
return 0;
}