Pagini recente » Cod sursa (job #1727860) | Cod sursa (job #1394200) | Cod sursa (job #2152686) | Cod sursa (job #1110557) | Cod sursa (job #1743796)
#include <iostream>
#include <cstdio>
#include <algorithm>
#define MAXN 1050
using namespace std;
struct fractie
{
int sus, jos;
fractie(int sus = 0, int jos = 1) : sus(sus), jos(jos) { }
bool operator==(fractie f)
{
return 1LL*this->sus*f.jos == 1LL*f.sus*this->jos;
}
};
fractie a[MAXN*MAXN];
int n, k;
int xes[MAXN], yes[MAXN];
bool cmp(fractie e, fractie f)
{
return 1LL*e.sus*f.jos < 1LL*f.sus*e.jos;
}
void citire()
{
int x, y;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d %d", &xes[i], &yes[i]);
for (int i = 1; i <= n; i++)
for (int j = i+1; j <= n; j++)
a[++k] = fractie(yes[j]-yes[i], xes[j]-xes[i]);
sort(a+1, a+k+1, cmp);
}
void solve()
{
int rez = 0;
int run = 1;
for (int i = 2; i <= k; i++) {
if (a[i] == a[i-1])
run++;
else {
rez += run*(run-1) / 2;
run = 1;
}
}
rez += run*(run-1) / 2;
printf("%d", rez);
}
int main()
{
freopen("trapez.in", "r", stdin);
freopen("trapez.out", "w", stdout);
citire();
solve();
return 0;
}