Pagini recente » Cod sursa (job #770521) | Cod sursa (job #1489918) | Cod sursa (job #1050552) | Cod sursa (job #1281643) | Cod sursa (job #612529)
Cod sursa(job #612529)
#include <fstream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int compare (const void *a, const void *b)
{
return ( **(double**)a - **(double**)b < 0);
}
int main () {
ifstream in ("trapez.in");
ofstream out ("trapez.out");
int n, k, i, j, l, count;
double crd [1000][2], p;
double **panta = (double**)calloc (1000000, sizeof(double*)), oy[1000];
in >> n;
for (i = 0; i < n; i++)
in >> crd[i][0] >> crd[i][1];
k = 0, l = 0;
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
{
if (crd[j][0] == crd[i][0])
{
oy[l] = pow((crd[j][0] - crd[i][0]), 2) + pow((crd[j][1] - crd[i][1]), 2);
l++;
}
else
{
panta[k] = (double*) calloc (2, sizeof (double));
panta[k][0] = (double)((crd[j][1] - crd[i][1])/(crd[j][0] - crd[i][0]));
panta[k][1] = pow((crd[j][0] - crd[i][0]), 2) + pow((crd[j][1] - crd[i][1]), 2);
k++;
}
}
qsort (panta, k, sizeof(panta[0]), compare);
count = 0;
for (i = 0; i < k - 1; i++)
{
p = panta[i][0];
j = i + 1;
while (j < k && p == panta[j][0])
{
count ++;
if (panta[i][1] == panta[j][1])
count++;
j++;
}
}
for (i = 0; i < l - 1; i++)
for (j = i + 1; j < l; j++)
if (oy[i] == oy[j])
count += 2;
else
count ++;
out << count;
return 0;
}