Pagini recente » Cod sursa (job #2758992) | Cod sursa (job #2067433) | Cod sursa (job #1727736) | Cod sursa (job #1998383) | Cod sursa (job #588812)
Cod sursa(job #588812)
#include <algorithm>
using namespace std;
double abbs(double A) {
if (A<0)
return -A ;
return A ;
}
struct punct{
int x;
int y;
};
int cmp (double A , double B) {
return A>B ;
}
punct v[1001];
double p[1000009];
int cnt,cont=1;
int rez,n;
int main(){
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n) ;
for(int i=1;i<=n;++i) {
scanf("%d%d",&v[i].x,&v[i].y);
}
int nrx=0 ;
int nry=0 ;
for(int i=1;i<n;++i) {
for(int j=i+1;j<=n;++j) {
if (v[i].x==v[j].x) {
nrx++ ;
}
if (v[i].y==v[j].y) {
nry++ ;
}
else if (v[i].x!=v[j].x) {
p[++cnt]=(double)(v[j].y-v[i].y)/(v[j].x-v[i].x);
p[cnt]=abbs(p[cnt]) ;
}
}
}
sort(p+1,p+cnt+1,cmp) ;
rez+=nrx*(nrx-1)/2 ;
rez+=nry*(nrx-1)/2 ;
for(int i=2;i<=cnt;++i) {
if(p[i]==p[i-1])
cont++;
else {
rez+=cont*(cont-1)/2 ;
cont=1;
}
}
rez+=cont*(cont-1)/2 ;
printf("%d",rez) ;
return 0 ;
}