Pagini recente » Cod sursa (job #2681519) | Cod sursa (job #140946) | Cod sursa (job #1854914) | Cod sursa (job #2594566) | Cod sursa (job #1776099)
#include<fstream>
#include<string.h>
#include<ctype.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<unordered_map>
#include<array>
#include<deque>
#include<math.h>
#include<unordered_set>
#include<set>
#include<iomanip>
#include<bitset>
using namespace std;
vector<double>pante;
vector<double>::iterator it, iter;
int n, i, j, nr, rez;
double m;
int puncte[1010][3];
int main()
{
//ifstream f("file.in");
//ofstream g("file.out");
ifstream f("trapez.in");
ofstream g("trapez.out");
f >> n;
for (i = 1; i <= n; i++)
{
f >> puncte[i][1] >> puncte[i][2];
}
for (i = 1; i <= n - 1; i++)
for (j = i + 1; j <= n; j++)
{
if (puncte[j][2] - puncte[i][2] == 0)
{
pante.push_back(0.424242424242);
}
else
if (puncte[j][1] - puncte[i][1] == 0)
{
pante.push_back(-1);
}
else
{
m = double(puncte[j][2] - puncte[i][2]) / double(puncte[j][1] - puncte[i][1]);
pante.push_back(m);
}
}
sort(pante.begin(), pante.end());
nr = rez = 0;
for (it = pante.begin(); it != pante.end(); it++)
{
iter = it;
iter++;
if (iter != pante.end() && *it != *iter)
{
rez += (nr*(nr - 1) / 2);
nr = 1;
}
else
{
nr++;
}
}
g << rez;
return 0;
}