Pagini recente » Cod sursa (job #1399724) | Cod sursa (job #289973) | Cod sursa (job #2284240) | Cod sursa (job #2747898) | Cod sursa (job #2595415)
#include <fstream>
#include <algorithm>
#include <vector>
#define INF 0x3f3f3f3f
using namespace std;
ifstream f ("trapez.in");
ofstream g ("trapez.out");
struct punct
{
double x, y;
};
punct a[1005];
int N;
vector <double> panta;
void Read ()
{
f >> N;
for (int i = 1; i <= N; ++i)
f >> a[i].x >> a[i].y;
}
void Precalculare ()
{
for (int i = 1; i <= N; ++i)
for (int j = i + 1; j <= N; ++j)
{
if (a[i].x == a[j].x) panta.push_back(INF);
else
{
panta.push_back((a[i].y - a[j].y) / (a[i].x - a[j].x));
}
}
sort(panta.begin(), panta.end());
}
void Solve ()
{
int nr = 1;
long long ans = 0;
for (int i = 1; i < panta.size(); ++i)
{
if (panta[i] == panta[i-1]) ++ nr;
else
{
ans = ans + (nr * (nr-1)) / 2;
nr = 1;
}
}
ans = ans + nr * (nr - 1) / 2;
g << ans << '\n';
}
int main()
{
Read ();
Precalculare();
Solve();
return 0;
}