Pagini recente » Cod sursa (job #1105370) | Cod sursa (job #1736983) | Cod sursa (job #1087359) | Cod sursa (job #1087495) | Cod sursa (job #571384)
Cod sursa(job #571384)
#include<stdio.h>
#include<stdlib.h>
FILE*fin,*fout;
struct pante{
int x,y;
}v[1000001];
long long i,j,n,nrt,a[1001],b[1001],nr,px,py;
int cmp(const void*a,const void *b){
//if((*(pante*)a).x*(*(pante*)b).y>(*(pante*)a).y *(*(pante*)b).x){
return (*(pante*)a).x-(*(pante*)b).x;
//}
//return (*(pante*)b).x-(*(pante*)a).x;
}
int main(){
fin=fopen("trapez.in","r");
fout=fopen("trapez.out","w");
fscanf(fin,"%lld",&n);
for(i=1;i<=n;i++){
fscanf(fin,"%lld %lld",&a[i],&b[i]);
}
int ok=1;
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
ok=1;
if(b[i]==b[j]){px++;ok=0;}
if(a[i]==a[j]){py++;ok=0;}
if(ok==1) {
nr++;
v[nr].x=b[j]-b[i];
v[nr].y=a[j]-a[i];
}
}
}
nrt=0;
long long nrt1;
qsort(v+1,nr,sizeof(pante),cmp);
for(i=1;i<=nr;i++){
j=i+1; nrt1=1;
while(v[i].x*v[j].y==v[i].y*v[j].x&&j<=nr){nrt1++;j++;}
nrt=nrt+nrt1*(nrt1-1)/2;
i=j-1;
}
nrt=nrt+px*(px-1)/2;
nrt=nrt+py*(py-1)/2;
fprintf(fout,"%lld",nrt);
return 0;
}