Pagini recente » Cod sursa (job #123187) | Cod sursa (job #1094823) | Cod sursa (job #2944165) | Cod sursa (job #1398836) | Cod sursa (job #769584)
Cod sursa(job #769584)
#include <stdio.h>
#include <stdlib.h>
struct punct
{
int x;
int y;
} p[1001];
double a[1000010];
int n;
void sw(double *a,double *b)
{
double t=*a; *a=*b; *b=t;
}
void qs(int left,int right)
{
int i,j; double p;
i=left; j=right; p=a[(i+j)/2];
while (i<j)
{
while (a[i]<p ) i++;
while (a[j]>p ) j--;
if (i<=j)
{
sw(&a[i],&a[j]);
i++; j--;
}
}
if (i<right) qs(i,right);
if (j>left) qs(left,j);
}
int main()
{
int i,j,k=0,rez;
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%i",&n);
for (i=1; i<=n; i++) scanf("%i%i",&p[i].x,&p[i].y);
for (i=1; i<n; i++)
for (j=i+1; j<=n; j++)
if (p[i].x==p[j].x) a[++k]= 2000000000;
else
{
a[++k]=(1.0*(p[i].y-p[j].y))/(1.0*(p[i].x-p[j].x));
// printf("%f\n",a[k]);
}
qs(1,k);
rez=0;
for (i=1; i<k; i++)
{
// printf("%f\n",a[i]);
j=i+1;
while (a[i]==a[j]) {rez++; j++;}
}
printf("%i",rez);
return 0;
}