Pagini recente » Cod sursa (job #1141984) | Cod sursa (job #2515709) | Cod sursa (job #629215) | Cod sursa (job #2593981) | Cod sursa (job #2594676)
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
#define x first
#define y second
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
vector <double> panta;
const double eps = 1e-9;
typedef pair <int, int> p;
vector <p> v;
int n, paral;
inline bool equal(double a)
{
return abs(a) < eps;
}
int main()
{
fin >> n;
v.resize(n);
for (int i = 0; i < n; ++i)
{
fin >> v[i].x >> v[i].y;
for (int j = 0; j < i; ++j)
{
double r;
if (v[i].x != v[j].x)
{
double sus = v[i].y - v[j].y, jos = v[i].x - v[j].x;
r = sus / jos;
panta.push_back(r);
}
else paral++;
}
}
sort(panta.begin(), panta.end());
int i = 1, cnt = ((paral * (paral - 1)) >> 1) , crt;
while (i < n)
{
crt = 1;
while (i < n && equal(panta[i] - panta[i - 1]))
{
++crt;
++i;
}
++i;
cnt += ((crt * (crt - 1)) >> 1);
}
fout << cnt << "\n";
return 0;
}