Pagini recente » Cod sursa (job #1608916) | Cod sursa (job #1470497) | Cod sursa (job #2395437) | Cod sursa (job #1976833) | Cod sursa (job #681723)
Cod sursa(job #681723)
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
//m ( x2 - x1 ) = y2 - y1
//m =
class fractie
{
public:
fractie(): numar(0), numi(0) {}
fractie(int numarS, int numiS): numar(numarS), numi(numiS){}
bool operator<(fractie f2) const
{
return (f2.numi * numar < f2.numar * numi);
}
bool operator==(fractie f2)
{
return (f2.numi * numar == f2.numar * numi);
}
int numar,numi;
};
#define MAXN 105
int main()
{
FILE *in = fopen("trapez.in", "r");
FILE *out = fopen("trapez.out", "w");
int i, j, n, x[MAXN], y[MAXN], npante = 0;
fractie pante[MAXN * MAXN + 100];
fscanf(in, "%i", &n);
for(i = 1; i <= n; i++)
{
fscanf(in, "%i %i", &x[i], &y[i]);
for(j = 1; j < i; j++)
{
if(x[i] != x[j])
pante[++npante] = fractie(y[j] - y[i], x[j] - x[i]);
}
}
sort(pante + 1, pante + npante + 1);
int nraux = 0, nrFinal = 0;
pante[0] = fractie(-1, -1);
for(i = 1; i < npante; i++)
{
nraux = 1;
while(pante[i + 1] == pante[i])
{
i++;
nraux++;
}
nrFinal += nraux * (nraux - 1) / 2;
}
nrFinal += nraux * (nraux - 1) / 2;
fprintf(out, "%i", nrFinal);
}