Pagini recente » Cod sursa (job #1644338) | Cod sursa (job #1439737) | Cod sursa (job #1327648) | Cod sursa (job #1615346) | Cod sursa (job #1033704)
#include <stdio.h>
#include <stdlib.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define ll long long
#define N 1000
#define M 500000
using namespace std;
int x[N],y[N],n;
struct p{
int x,y;
void s(int x1,int y1,int x2,int y2){
if(x1==x2)x=0,y=1;
else if(x1<x2) x=x2-x1,y=y2-y1;
else x=x1-x2,y=y1-y2;
}
}r[M];
int c(const void*a,const void*b){
return -((ll)((*(p*)a).x)*((*(p*)b).y)-((ll)((*(p*)a).y)*((*(p*)b).x)))<0?-1:1;
}
int main(){
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%i",&n);
int l=-1;
fr(i,0,n)scanf("%i%i",x+i,y+i);
fr(i,0,n)fr(j,i+1,n)r[++l].s(x[i],y[i],x[j],y[j]);++l;
qsort(r,l,sizeof(p),c);
ll s=0;
fr(i,0,l) {
int j=1;
while(i+j<l&&r[i].x*r[i+j].y==r[i].y*r[i+j].x)++j;
i+=j-1;
s+=j*(j-1)/2;
}
printf("%lli",s);
return 0;
}