Pagini recente » Cod sursa (job #3260412) | Cod sursa (job #1650803) | Cod sursa (job #2902685) | Cod sursa (job #1367906) | Cod sursa (job #1360947)
#include <cstdio>
#include <algorithm>
#define f first
#define s second
#define mp make_pair
using namespace std;
int a[1024], b[1024];
pair <int, int> v[1000010];
bool cmp (pair <int, int> a, pair <int, int> b)
{
long long x = 1LL * a.f * b.s;
long long y = 1LL * b.f * a.s;
return (1LL * x < 1LL * y);
}
int main ()
{
freopen ("trapez.in", "r", stdin);
freopen ("trapez.out", "w", stdout);
int n;
scanf ("%d", &n);
for (int i = 1; i <= n; ++i)
scanf ("%d %d", &a[i], &b[i]);
int k = 0;
for (int i = 1; i < n; ++i)
for (int j = i + 1; j <= n; ++j)
if (a[i] - a[j]) v[++k] = mp (b[i] - b[j], a[i] - a[j]);
sort (v + 1, v + k + 1, cmp);
//for (int i = 1; i <= k; ++i)
// printf ("%lf\n", 1.0 * v[i].f / v[i].s);
int nr = 0;
for (int i = 2; i <= k;)
{
int nrr = 1;
long long x = 1LL * v[i - 1].f * v[i].s;
long long y = 1LL * v[i].f * v[i - 1].s;
while (1LL * x == 1LL * y && i <= k)
{
++nr;
++i;
x = 1LL * v[i - 1].f * v[i].s;
y = 1LL * v[i].f * v[i - 1].s;
}
nr += nrr * (nrr - 1) / 2;
if (nrr == 1) ++i;
}
printf ("%d\n", nr);
return 0;
}