Pagini recente » Cod sursa (job #916441) | Cod sursa (job #2251426) | Cod sursa (job #1102403) | Cod sursa (job #94601) | Cod sursa (job #642515)
Cod sursa(job #642515)
#include <iostream>
#include <cstdio>
#include <algorithm>
#define NMax 1005
#define x first
#define y second
#define Infinity 2000000001
#define Eps 0.00000000000001
using namespace std;
int N, S, Line;
pair <int, int> P[NMax];
double M[NMax*NMax];
double GetM (int i, int j)
{
int a=P[j].y-P[i].y;
int b=P[j].x-P[i].x;
if (a==0)
{
return 0;
}
if (b==0)
{
return Infinity;
}
return (double)((double)a/(double)b);
}
void Read ()
{
freopen ("trapez.in", "r", stdin);
scanf ("%d", &N);
for (int i=1; i<=N; ++i)
{
scanf ("%d %d", &P[i].x, &P[i].y);
}
}
void Print ()
{
freopen ("trapez.out", "w", stdout);
printf ("%d\n", S);
}
int main()
{
Read ();
for (int i=1; i<N; ++i)
{
for (int j=i+1; j<=N; ++j)
{
M[++Line]=GetM (i, j);
}
}
sort (M+1, M+Line+1);
int NM=0;
for (int i=2; i<=Line; ++i)
{
if (M[i]-M[i-1]<Eps)
{
++NM;
}
else
{
S+=(NM*(NM+1)/2);
NM=0;
}
}
Print ();
return 0;
}