Pagini recente » Cod sursa (job #285149) | Cod sursa (job #1376273) | Cod sursa (job #3265144) | Cod sursa (job #2341696) | Cod sursa (job #2047750)
#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
const double eps = 1.e-14;
struct po
{
int x;
int y;
};
vector <po>v;
vector <double>p;
bool vertical(po p1, po p2)
{
return p1.x == p2.x;
}
double panta(po p1, po p2)
{
if(vertical(p1, p2)) return 2.e9;
return (1.0 * p2.y - p1.y)/(p2.x - p1.x);
}
int main()
{
freopen("trapez.in", "r", stdin);
freopen("trapez.out", "w", stdout);
int n, x, y, cnt = 0, secv = 0;
double elm;
po tmp;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d%d", &x, &y);
tmp.x = x;
tmp.y = y;
v.push_back(tmp);
}
for(int i = 0; i < n; i++)
{
for(int j = i + 1; j < n; j++)
{
p.push_back(panta(v[i], v[j]));
}
}
sort(p.begin(), p.end());
elm = p[0];secv = 1;
for(int i = 1 ; i < p.size(); i++)
{
if(fabs(elm - p[i]) < eps)
{
secv++;
}
else
{
elm = p[i];
cnt += secv * (secv - 1) * 0.5;
secv = 1;
}
}
cnt += secv * (secv - 1) * 0.5;
printf("%d", cnt);
return 0;
}