Pagini recente » Cod sursa (job #817552) | Cod sursa (job #1625035) | Cod sursa (job #1581842) | Cod sursa (job #2475815) | Cod sursa (job #1026103)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("trapez.in");
ofstream out ("trapez.out");
int N;
float pante[500500];
struct punct
{
int x, y;
};
punct v[1005];
float panta (punct a, punct b, int &ok)
{
if (a.x==b.x)
{
ok=0;
return 0;
}
if (a.y==b.y) return 0;
return (a.y-b.y)/1.00/(a.x-b.x);
}
int main()
{
in>>N;
for (int i=0;i<N;++i)
{
in>>v[i].x>>v[i].y;
}
int nr=0, p_inf=0;
for (int i=0;i<N;++i)
for (int j=i+1;j<N;++j)
{
int ok=1;
float x=panta(v[i],v[j],ok);
if (ok)
{
pante[nr]=x;
++nr;
}
else
{
++p_inf;
}
}
int nr_trap=(p_inf*(p_inf-1))/2;
//cout<<p_inf<<" ";
sort (pante, pante+nr);
// for (int i=0;i<nr;++i)
// cout<<pante[i]<<" ";
int i=0;
while (i<nr-1)
{
int num=1;
while (pante[i]==pante[i+1])
{
++num;
++i;
}
// cout<<num<<" ";
if (num>1)
{
nr_trap=nr_trap+((num*(num-1))/2);
}
++i;
}
out<<nr_trap;
return 0;
}