Pagini recente » Cod sursa (job #1273552) | ff | Cod sursa (job #1285672) | Cod sursa (job #3243969) | Cod sursa (job #647597)
Cod sursa(job #647597)
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 1001
struct E
{long long c,d;};
E e[N*N];
int n,a[N],b[N],l,t,p,r,q,i,j;
int C(E a,E b)
{return a.c*b.d<a.d*b.c;}
int main()
{freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{if(b[j]==b[i])
p++;
if(a[j]==a[i])
r++;
if(b[j]!=b[i]&&a[j]!=a[i])
e[++l].c=b[j]-b[i],e[l].d=a[j]-a[i];}
for(i=1;i<=l;i++)
if(e[i].d<0)
e[i].c=-e[i].c,e[i].d=-e[i].d;
sort(e+1,e+l+1,C);
for(i=1;i<l;i++)
if(e[i].c*e[i+1].d==e[i+1].c*e[i].d)
t++;
else
q=q+t*(t+1)/2,t=0;
if(t)
q=q+t*(t+1)/2;
printf("%d",q+p*(p-1)/2+r*(r-1)/2);
return 0;}