Pagini recente » Cod sursa (job #2176681) | Cod sursa (job #370067) | Cod sursa (job #1425597) | Cod sursa (job #167242) | Cod sursa (job #442210)
Cod sursa(job #442210)
#include<stdio.h>
struct structura{long long x,y;};
structura p[1001],t;
float vect[501501],aux;
long long n,poz,nr,s,nroy;
void citire()
{
freopen("trapez.in","r",stdin);
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&p[i].x,&p[i].y);
}
void panta()
{
int i,j;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
t.y=p[j].y-p[i].y;
t.x=p[j].x-p[i].x;
if(t.x!=0)
{
poz++;
vect[poz]=(float)t.y/t.x;
}
else nroy++;
}
}
void quickSort(int stanga, int dreapta)
{int i = stanga, j = dreapta;
float pivot = vect[(stanga + dreapta) / 2],tmp;
while (i <= j) {
while (vect[i] < pivot)
i++;
while (vect[j] > pivot)
j--;
if (i <= j) {
tmp = vect[i];
vect[i] =vect[j];
vect[j] = tmp;
i++;
j--;
}
}
if (stanga < j)
quickSort(stanga, j);
if (i < dreapta)
quickSort(i, dreapta);
}
int main()
{
int i;
citire();
panta();
quickSort(1,poz);
freopen("trapez.out","w",stdout);
aux=vect[1];nr=1;
for(i=2;i<=poz;i++)
{
//printf("%f ",vect[i]);
if(vect[i]==aux)
nr++;
else
{
s=s+nr*(nr-1)/2;
nr=1;
aux=vect[i];
}
}
printf("%d\n",s+nroy*(nroy-1)/2);
}