Pagini recente » Cod sursa (job #2494601) | Cod sursa (job #624050) | Cod sursa (job #378739) | Cod sursa (job #2934481) | Cod sursa (job #2091896)
#include <iostream>
#include <cstdio>
#include <algorithm>
#define N 1005
using namespace std;
int n, nr, numitor_0;
struct rational
{
int numarator, numitor;
};
rational pante[N];
struct coord
{
int x, y;
};
coord vec[N];
rational calc_panta(int x1, int y1, int x2, int y2)
{
rational tmp;
tmp.numarator = y2 - y1;
tmp.numitor = x2 - x1;
return tmp;
}
int cmp(rational a, rational b)
{
return(a.numarator * b.numitor < a.numitor * b.numarator);
}
void solve()
{
int l_pante = 0;
for(int i = 0 ; i < n - 1 ; ++i)
{
for(int j = i + 1 ; j < n ; ++j)
{
pante[l_pante++] = calc_panta(vec[i].x, vec[i].y, vec[j].x, vec[j].y);
if(!pante[l_pante - 1].numitor)
{
l_pante--;
numitor_0++;
}
}
}
sort(pante, pante + l_pante, cmp);
for(int i = 0 ; i < l_pante - 1 ; ++i)
{
if(!cmp(pante[i], pante[i + 1]))
{
nr++;
}
}
printf("%d",nr + numitor_0 * (numitor_0 - 1) / 2);
}
void read()
{
scanf("%d", &n);
for(int i = 0 ; i < n ; ++i)
{
scanf("%d %d\n", &vec[i].x, &vec[i].y);
}
solve();
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
read();
return 0;
}