Pagini recente » Cod sursa (job #2326294) | Cod sursa (job #709581) | Cod sursa (job #376357) | Cod sursa (job #1457913) | Cod sursa (job #577685)
Cod sursa(job #577685)
#include<stdio.h>
#include<stdlib.h>
FILE *fin,*fout;
long n,i,nrx,nry,j,p;
long long sol;
struct punct{
long x;
long y;
}v[1001],r[500000];
int cmp(const void *a,const void *b){
long long c;
c=(long long)(*(punct *)a).y*(*(punct *)b).x-(long long )(*(punct *)b).y*(*(punct *)a).x;
if(c<0)
return -1;
if(c==0)
return 0;
if(c>0)
return 1;
}
int main(){
fin=fopen("trapez.in","r");
fout=fopen("trapez.out","w");
fscanf(fin,"%ld",&n);
for(i=1;i<=n;i++){
fscanf(fin,"%ld %ld",&v[i].x,&v[i].y);
}
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
if(v[i].y==v[j].y){
nry++;
}
else
if(v[i].x==v[j].x)
nrx++;
else{
r[++p].y=v[i].y-v[j].y;
r[p].x=v[i].x-v[j].x;
if(r[p].x<0){
r[p].y=-r[p].y;
r[p].x=-r[p].x;
}
}
}
}
qsort(r+1,p,sizeof(punct),cmp);
for(i=1;i<=p;i++){
for(j=i+1;j<=p;j++){
if((long long )r[i].x*r[j].y==(long long)r[i].y*r[j].x){
sol++;
}
else
break;
}
}
sol+=(long long)nrx*(nrx-1)/2;
sol+=(long long)nry*(nry-1)/2;
fprintf(fout,"%lld",sol);
return 0;}