Pagini recente » Cod sursa (job #1260291) | Cod sursa (job #3130802) | Cod sursa (job #2356691) | Cod sursa (job #2963555) | Cod sursa (job #2864)
Cod sursa(job #2864)
#include<stdio.h>
#include<stdlib.h>
FILE *f=fopen("trapez.in","r"),*g=fopen("trapez.out","w");
double pante[1000],test;
struct punct{
long x;
long y;
} pct[1001];
int compare_double (const void *a, const void *b)
{
const double *da = (const double *) a;
const double *db = (const double *) b;
return (*da > *db) - (*da < *db);
}
unsigned long n,i,j,sol=0;
int main()
{
pante[0]=-2000000005;
fscanf(f,"%ld",&n);
for(i=1;i<=n;fscanf(f,"%ld %ld",&pct[i].x,&pct[i].y),i++);
int nn=0;
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
{
nn++;
if(pct[i].x==pct[j].x)
pante[nn]=-2000000001;
else
{
pante[nn]=(double) (pct[j].y-pct[i].y) / (double) (pct[j].x-pct[i].x);
}
}
qsort (pante, nn+1 , sizeof (double), compare_double);
n=1;
test=pante[1];
for(i=2;i<=nn;i++)
{
if(test==pante[i])
n++;
else
{
if(n!=1)
sol+=(n*(n-1)/2);
test=pante[i];
n=1;
}
}
fprintf(g,"%ld",sol);
fclose(f);
fclose(g);
return 0;
}