Pagini recente » Cod sursa (job #1448800) | Cod sursa (job #1489629) | Cod sursa (job #2927898) | Cod sursa (job #577764) | Cod sursa (job #2296131)
#include<cstdio>
#include<algorithm>
using namespace std;
struct dr
{
int x;
int y;
};
int x[1005], y[1005];
dr perechi[600000];
bool cmp(dr a, dr b)
{
if(a.y == 0 || b.y == 0)
{
if(a.y == 0 && b.y == 0)
return 0;
else
if(a.y == 0)
return 0;
else
return 1;
}
if((double) a.x / a.y > (double)a.x / b.y)
return 1;
else
return 0;
}
int main()
{
int n, i, j, nr = 0, nc;
long long a, b, sum = 0;
scanf("%d", &n);
for(i = 1; i <= n; ++ i)
scanf("%d%d", &x[i], &y[i]);
for(i = 1; i < n; ++ i)
for(j = i + 1; j <= n; ++ j)
{
perechi[++ nr].x = x[i] - x[j];
perechi[nr].y = y[i] - y[j];
}
sort(perechi + 1, perechi + nr + 1, cmp);
for(i = 1; i <= nr; ++ i)
{
nc = 0;
while((double)perechi[i].x / perechi[i].y == (double)perechi[i + nc + 1].x / perechi[i + nc + 1].y && i + nc < nr)
{
++ nc;
}
sum = sum + (long long) (((long long)nc * (nc + 1))/2);
}
printf("%lld", sum);
return 0;
}