Pagini recente » Cod sursa (job #2311938) | Cod sursa (job #1416815) | Cod sursa (job #1766231) | Cod sursa (job #942140) | Cod sursa (job #612526)
Cod sursa(job #612526)
#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[100000][4], oy[1000][3];
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][0] = i;
oy[l][1] = j;
oy[l][2] = pow((crd[j][0] - crd[i][0]), 2) + pow((crd[j][1] - crd[i][1]), 2);
l++;
}
else
{
panta[k][0] = (double)((crd[j][1] - crd[i][1])/(crd[j][0] - crd[i][0]));
panta[k][1] = i;
panta[k][2] = j;
panta[k][3] = 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 (p == panta[j][0])
{
count ++;
if (panta[i][3] == panta[j][3])
count++;
j++;
}
}
for (i = 0; i < l - 1; i++)
{
p = oy[i][0];
j = i + 1;
while (p == oy[j][0])
{
count ++;
if (oy[i][3] == oy[j][3])
count++;
j++;
}
}
out << count;
return 0;
}