Pagini recente » Cod sursa (job #1610652) | Cod sursa (job #3179528) | Cod sursa (job #2672916) | Cod sursa (job #2802725) | Cod sursa (job #2659019)
#include <fstream>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
const double PI=2.0*acos(0);
const double eps=1.0e-14;
const double INF=2.0e9;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
double panta[600001];
class POINT
{
public:
double x,y;
POINT()
{
x=y=0;
}
POINT(double x0, double y0)
{
x=x0;
y=y0;
}
POINT(const POINT&other)
{
x=other.x;
y=other.y;
}
void setxy(double x0, double y0)
{
x=x0;
y=y0;
}
double getx()
{
return x;
}
double gety()
{
return y;
}
double dist(const POINT&other)
{
return sqrt((x-other.x)*(x-other.x)+(y-other.y)*(y-other.y));
}
double calcularepanta(const POINT&other)
{
if (fabs(other.x - x) < eps)
return INF;
return (other.y - y) / (other.x - x);
}
};
int main()
{
int n, i, j, nr = 0, c = 1, x, y, k = 0;
fin>>n;
POINT p[1001];
for (i = 0; i < n; i++)
{
fin>>x>>y;
p[i].setxy(x, y);
}
for(i = 0; i < n - 1; i++)
for(j = i + 1; j < n; j++)
if(p[i].x != p[j].x * (-1))
panta[k++] = p[i].calcularepanta(p[j]);
sort(panta, panta + k);
panta[-1]=-10000000;
for(i = 0; i <= k; i++)
if(panta[i] == panta[i - 1])
c++;
else
{
nr += (c * (c - 1)) / 2;
c = 1;
}
nr += (c * (c - 1)) / 2;
fout<<nr;
return 0;
}