Pagini recente » Cod sursa (job #26956) | Cod sursa (job #633078) | Cod sursa (job #2138354) | Cod sursa (job #1765301) | Cod sursa (job #1018084)
#include <iostream>
#include <fstream>
using namespace std;
void quicksort(long a[],long b[],long st,long dr)
{
long i,j,aux,pa,pb;
i=st;
j=dr;
pa=a[(i+j)/2];
pb=b[(i+j)/2];
while (i <= j)
{
while (a[i]*pb<b[i]*pa)
i++;
while (a[j]*pb>b[j]*pa)
j--;
if (i <= j)
{
aux = a[i];
a[i] = a[j];
a[j] = aux;
aux = b[i];
b[i] = b[j];
b[j] = aux;
i++;
j--;
}
}
if (st < j)
quicksort(a,b,st,j);
if (i < dr)
quicksort(a,b,i,dr);
}
int main()
{
ifstream f("trapez.in");
ofstream g("trapez.out");
long n,i,j,nr=0,a[1001],b[1001],s,suma,c[500000],d[500000];
f>>n;
for(i=1;i<=n;i++)
f>>a[i]>>b[i];
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(a[i]==a[j])
{
nr++;
c[nr]=200000000;
d[nr]=1;
}
else
{
nr++;
c[nr]=b[j]-b[i];
d[nr]=a[j]-a[i];
if(d[nr]<0)
{
c[nr]=-c[nr];
d[nr]=-d[nr];
}
}
quicksort(c,d,1,nr);
s=0;
suma=0;
for(i=1;i<=nr-1;i++)
if(c[i]*d[i+1]==d[i]*c[i+1])
s++;
else
{
suma=suma+s*(s-1)/2;
s=1;
}
suma=suma+s*(s-1)/2;
g<<suma;
f.close();
g.close();
return 0;
}