Pagini recente » Cod sursa (job #1131621) | Cod sursa (job #1713349) | Cod sursa (job #866279) | Cod sursa (job #2881237) | Cod sursa (job #1388594)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1001
typedef struct
{
long x, y;
} point;
double v[MAXN*MAXN];
unsigned long vnr; //a bt-ben lvo elemek szama
point a[MAXN];
unsigned short n;
unsigned long long o=0; //ennyi trapezt kaptunk
int d_comp(const void * pv1, const void * pv2)
{
double *pd1=((double *)pv1), *pd2=((double *)pv2);
return (*pd1)>(*pd2) ? 1 : ((*pd1)==(*pd2) ? 0 : -1);
}
int main()
{
FILE * fi, * fo;
unsigned long i, j, t;
fi=fopen("trapez.in", "rt");
fo=fopen("trapez.out", "wt");
fscanf(fi, "%hu", &n);
vnr=0;
o=0;
for (i=0; i!=n; i++)
{
fscanf(fi, "%ld%ld", &a[i].x, &a[i].y);
for (j=0; j!=i; j++) //facem dreptele
if ((a[i].x != a[j].x) || (a[i].y != a[j].y))
{
v[vnr]=((double)a[i].y-a[j].y)/(a[i].x-a[j].x);
vnr++;
}
}
qsort(v, vnr, sizeof(double), &d_comp);
t=0;
for (i=1; i<vnr; i++)
{
if (v[i-1]==v[i])
t++;
else
if (t!=0)
{
o+=((t*(t+1))/2);
t=0;
}
}
if (t!=0) //meg lehet a ciklus vegen is egy trapez
o+=((t*(t+1))/2);
fprintf(fo, "%llu", o); //es meg is vagyunk
fclose(fi);
fclose(fo);
return 0;
}