Pagini recente » Cod sursa (job #38768) | Cod sursa (job #2967082) | Cod sursa (job #2955409) | Cod sursa (job #2092051) | Cod sursa (job #597620)
Cod sursa(job #597620)
#include <fstream>
#include <algorithm>
using namespace std;
typedef struct
{
long long x,y;
} punct;
typedef struct
{
long long numarator, numitor;
} panta;
panta b[1100000];
int n,poz=-1,nr=0;
punct a[1100];
bool ok(panta a, panta b)
{
return (a.numitor*b.numarator>=a.numarator*b.numitor);
}
int main()
{
ifstream f("trapez.in");
ofstream g("trapez.out");
f >> n;
int i,j,oriz=0,vert=0;
for (i=0; i<n; i++)
f >> a[i].x >> a[i].y;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
{
poz++;
b[poz].numarator=a[i].y-a[j].y;
b[poz].numitor=a[i].x-a[j].x;
if (b[poz].numarator==0)
{
oriz++;
poz--;
} else
if (b[poz].numitor==0)
{
vert++;
poz--;
} else
if (b[poz].numarator<0 && b[poz].numitor<0)
{
b[poz].numarator*=-1;
b[poz].numitor*=-1;
}
}
poz++;
sort(b, b+poz,ok);
for (i=1; i<poz; i++)
if (b[i].numitor*b[i-1].numarator==b[i].numarator*b[i-1].numitor) nr++;
nr+=(oriz-1)*oriz/2 + (vert-1)*vert/2;
g << nr;
return 0;
}