Pagini recente » Cod sursa (job #2053112) | Cod sursa (job #116939)
Cod sursa(job #116939)
#include <stdio.h>
#include <stdlib.h>
struct tort{long long szamlalo; long long nevezo;};
struct pont{long int x; long int y;};
tort egyenesek[1000010];
pont pontok[1010];
int hasonlit(const void *egyenes1,const void *egyenes2)
{
tort a, b;
a = *(tort*)egyenes1;
b = *(tort*)egyenes2;
return(a.szamlalo * b.nevezo - b.szamlalo * a.nevezo);
}
int main()
{
FILE *f;
int i, j, n, k = 0, db, r = 0;
f = fopen("trapez.in", "rt");
fscanf(f, "%d", &n);
for (i = 0; i < n; i++)
fscanf(f, "%d %d", &pontok[i].x, &pontok[i].y);
fclose(f);
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
{
egyenesek[k].szamlalo = pontok[j].x - pontok[i].x;
egyenesek[k].nevezo = pontok[j].y - pontok[i].y;
if (egyenesek[k].nevezo < 0)
{
egyenesek[k].szamlalo *= -1;
egyenesek[k].nevezo *= -1;
}
k++;
}
qsort(egyenesek, n*(n-1)/2, sizeof(tort), hasonlit);
for (i = 0; i < k; i++)
{
db = 0;
while (egyenesek[i].szamlalo * egyenesek[i + 1].nevezo ==
egyenesek[i + 1].szamlalo * egyenesek[i].nevezo && db + i < k)
db++;
r += db * (db - 1) / 2;
i += db;
}
f = fopen("trapez.out", "wt");
fprintf(f, "%li", r);
fclose(f);
}