Pagini recente » Cod sursa (job #1750720) | Cod sursa (job #627427) | Cod sursa (job #2485621) | Cod sursa (job #1877089) | Cod sursa (job #515512)
Cod sursa(job #515512)
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
#define inf 3000000000.0
#define NM 1005
int X[NM], Y[NM];
vector <double> pante;
int egale (double n1, double n2)
{
if (fabs(n1-n2) <= 0.000000001) return 1;
return 0;
}
int compara (double n1, double n2)
{
if (egale(n1, n2)) return 0;
if (n1 > n2) return 1;
return -1;
}
int main()
{
int N;
freopen ("trapez.in", "r", stdin);
freopen ("trapez.out", "w", stdout);
scanf ("%d", &N);
for (int i = 1; i <= N; ++i) scanf ("%d %d", &X[i], &Y[i]);
for (int i = 1; i <= N; ++i)
for (int j = i + 1; j <= N; ++j)
{
double sus = Y[j] - Y[i];
double jos = X[j] - X[i];
double m;
if (egale (jos, 0)) m = inf;
else m = sus/jos;
//printf ("%d %d %lf\n", i, j, m);
pante.push_back(m);
}
sort (pante.begin(), pante.end());
/*
for (int i = 0; i < pante.size(); ++i) printf ("%lf ", pante[i]);
printf ("\n");
*/
int ans = 0;
for (int i = 0; i < pante.size();)
{
double m= pante[i];
int j = i;
while (egale(m, pante[j])) ++j;
int cate = j - i;
ans += (cate * (cate-1))/2;
i = j;
}
printf ("%d", ans);
return 0;
}