Pagini recente » Cod sursa (job #2428170) | Cod sursa (job #1150856) | Cod sursa (job #1945744) | Cod sursa (job #87112) | Cod sursa (job #132593)
Cod sursa(job #132593)
#include<cstdio>
#include<vector>
#include<algorithm>
int n,i,j,m,x,y,c;
std::pair<int,int> v[1000];
std::pair<int,int> a[1000*1000],aux;
long long rez;
int cmmdc(int a,int b){
if(b==0)return a;
return cmmdc(b,a%b);}
int mod(int a){
if(a<0) return -a;
return a;}
long long comb(int k){
long long r=k;
r*=(k-1);
r>>=1;
return r;}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;++i)scanf("%d %d",&v[i].first,&v[i].second);
for(i=0;i<n;++i)
for(j=i+1;j<n;j++){
x=v[i].first-v[j].first;
y=v[i].second-v[j].second;
if(y<0) {x=-x;y=-y;}
if(y==0) {x=mod(x);}
c=cmmdc(mod(x),y);
x/=c;y/=c;
a[m].first=x;
a[m].second=y;
m++;}
std::sort(a,a+m);
i=0;
while(i<m){
j=1;
while(i<m-1 && a[i]==a[i+1]) ++i,++j;
rez+=comb(j);
++i;}
printf("%lld\n",rez);
fclose(stdout);
return 0;
}