Pagini recente » Cod sursa (job #405529) | Cod sursa (job #7536) | Cod sursa (job #1858745) | Cod sursa (job #786633) | Cod sursa (job #697044)
Cod sursa(job #697044)
#include <stdio.h>
#include<algorithm>
FILE *f=fopen("trapez.in","r"),*g=fopen("trapez.out","w");
long int n,poz=0;
double p[1000010];
struct punct{
long int x;
long int y;
}v[1001];
using namespace std;
void citire(){
long int i;
fscanf(f,"%ld\n",&n);
for(i=1; i<=n; i++){
fscanf(f,"%ld %ld\n",&v[i].x,&v[i].y);
}
}
void gaseste_paralele(){
long int i,j,a,b,c,d,k=0;
long long rez=0,nrp;
double panta;
for(i=1; i<=n; i++){
a=v[i].x; b=v[i].y;
for(j=i+1; j<=n; j++){
c=v[j].x; d=v[j].y;
k++;
if(b-d==0){p[k]=2000000001;}
else if(a-c==0){p[k]=0;}
else{
p[k]=(double)(v[j].y - v[i].y) / (double)(v[j].x - v[i].x);
}
}
}
// printf("%ld",k);
sort(p+1,p+k+1);
/* for(i=1; i<=k; i++){
fprintf(g,"%f\n",p[i]);
}*/
j=1; nrp=0; i=1;
while(i<k){
while(p[j+1]==p[i] && j<=k){
j++;
}
nrp=j-i+1;
rez=rez+nrp*(nrp-1)/2;
i=j+1;
}
fprintf(g,"%lld",rez);
}
int main()
{
citire();
gaseste_paralele();
return 0;
}