Pagini recente » Cod sursa (job #915381) | Borderou de evaluare (job #2495629) | Cod sursa (job #701600) | Borderou de evaluare (job #520054) | Cod sursa (job #2410202)
#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;
pair<int, int> a[1005];
map<pair<int, int>, pair<int, int>> m;
int n, comb[1002];
int cmmdc(int a, int b)
{
int r;
while(b)
{
r = a%b;
a = b;
b = r;
}
return a;
}
void rez()
{
scanf("%d", &n);
for(int i = 0; i<n; i++)
{
scanf("%d %d", &a[i].first, &a[i].second);
}
int c, fi, se;
int suma = 0;
for(int i = 0; i<n; i++)
{
for(int j = i+1; j<n; j++)
{
fi = a[i].first - a[j].first;
se = a[i].second - a[j].second;
c = cmmdc(fi, se);
if(c!=0)
{
fi = fi/c;
se = se/c;
}
m[{fi, se}].first++;
suma+=m[{fi, se}].second + (m[{fi, se}].first-1);
m[{fi, se}].second = m[{fi, se}].second + (m[{fi, se}].first-1);
}
}
/*comb[0] = 0;
for(int i = 1; i<n; i++)
{
comb[i] = comb[i-1]+(i-1);
}
for(auto itr : m)
{
suma+=comb[itr.second];
}*/
printf("%d", suma);
}
int main()
{
freopen("trapez.in", "r", stdin);
freopen("trapez.out", "w", stdout);
rez();
return 0;
}