Pagini recente » Cod sursa (job #900569) | Cod sursa (job #2417731) | Cod sursa (job #2598918) | Cod sursa (job #24494) | Cod sursa (job #2876386)
#include <fstream>
#include <unordered_map>
#include <algorithm>
#define nmax 1000
#define inf 2000000000
using namespace std;
struct pct
{
int x, y;
};
struct panta
{
int numa, numi;
};
long long hashh (panta x)
{
return (long long) (1 << 31) * x.numa + x.numi;
}
pct v[nmax + 1];
unordered_map<long long, int> f;
int main()
{
ifstream cin ("trapez.in");
ofstream cout ("trapez.out");
int n, i, j, act, gcd;
long long tot = 0;
panta x;
cin >> n;
for (i = 1; i <= n; i++)
cin >> v[i].x >> v[i].y;
for (i = 1; i <= n; i++)
for (j = i + 1; j <= n; j++)
{
if (v[j].x - v[i].x == 0)
x = {inf, inf};
else
{
gcd = __gcd (v[j].y - v[i].y, v[j].x - v[i].x);
if (gcd == 0)
gcd = 1;
x = { (v[j].y - v[i].y) / gcd, (v[j].x - v[i].x) / gcd};
if (x.numa < 0 && x.numi < 0)
x.numa *= -1, x.numi *= -1;
else if (x.numi < 0)
x.numa *= -1, x.numi *= -1;
}
act = ++f[hashh (x)];
tot += act - 1;
}
cout << tot;
return 0;
}