Pagini recente » Cod sursa (job #367399) | Cod sursa (job #1217188) | Cod sursa (job #1973055) | Cod sursa (job #3158226) | Cod sursa (job #1396692)
#include <cstdio>
#include <algorithm>
#include <climits>
#define Nmax 1010
#define eps 1e-12
#define x first
#define y second
using namespace std;
int n , i , j , crt , nr;
long long sol;
double tg[Nmax * Nmax];
pair < int , int > A[Nmax];
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d", &n);
for (i = 1; i <= n; ++i)
scanf("%d %d", &A[i].x, &A[i].y);
for (i = 1; i <= n; ++i)
for (j = i + 1; j <= n; ++j)
if (A[i].x != A[j].x) tg[++nr] = 1.0 * (A[i].y - A[j].y) / (A[i].x - A[j].x);
else tg[++nr] = INT_MAX;
sort(tg + 1 , tg + nr + 1);
tg[0] = tg[1] + 100;
for (j = 1; j <= nr; ++j)
if (tg[j] - tg[j-1] >= -eps && tg[j] - tg[j-1] <= eps) crt++;
else
{
sol += 1LL * crt * (crt - 1) >> 1;
crt = 1;
}
sol += 1LL * crt * (crt - 1) >> 1;
printf("%d\n", sol);
return 0;
}