Pagini recente » Cod sursa (job #504792) | Cod sursa (job #967764) | Cod sursa (job #1916396) | Cod sursa (job #2398544) | Cod sursa (job #2410189)
#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;
pair<int, int> a[1005];
map<pair<int, 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;
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}] = m[{fi, se}] + 1;
}
}
comb[0] = 0;
for(int i = 1; i<n; i++)
{
comb[i] = comb[i-1]+(i-1);
}
int suma = 0;
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;
}