Pagini recente » Cod sursa (job #1364431) | Cod sursa (job #1397526) | Cod sursa (job #2741417) | Cod sursa (job #1364425) | Cod sursa (job #1826510)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MaxN 1001
#define eps 0.000000000000001
#define INF 2140000000
#define MAX 131072
using namespace std;
FILE *IN,*OUT;
int N,Size=0;
long long Ans=0;
struct point
{
int x,y;
}v[MaxN];
double panta[MaxN*MaxN];
int main()
{
IN=fopen("trapez.in","r");
OUT=fopen("trapez.out","w");
fscanf(IN,"%d",&N);
for(int i=1;i<=N;i++)
fscanf(IN,"%d%d",&v[i].x,&v[i].y);
for(int i=1;i<N;i++)
for(int j=i+1;j<=N;j++)
{
if((v[i].x-v[j].x)!=0)
panta[++Size]=((double)v[i].y-v[j].y)/((double)v[i].x-v[j].x);
else panta[++Size]=INF;
}
sort(panta+1,panta+1+Size);
int Len=1;
for(int i=2;i<=Size;i++)
{
if(panta[i]-panta[i-1]<=eps)
Len++;
else Ans+=Len*(Len-1)/2,Len=1;
}
Ans+=Len*(Len-1)/2;
fprintf(OUT,"%d\n",Ans);
return 0;
}