Pagini recente » Cod sursa (job #159370) | Cod sursa (job #96376) | Cod sursa (job #889134) | Cod sursa (job #3123047) | Cod sursa (job #3030066)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("trapez.in");
ofstream cout("trapez.out");
const int dim = 1000 + 5;
int x[dim], y[dim];
struct ceva
{
int a, b;
};
ceva v[dim * dim ];
bool paralele(ceva x, ceva y )
{
return ( 1LL * x.a * y. b == 1LL * x.b * y.a);
}
bool cmp(ceva x, ceva y)
{
if (1LL * x.a * y.b < 1LL * x.b * y. a )
return true;
return false;
}
int main()
{
int n, i, j, k = 0;
cin >> n;
for ( i = 1; i <= n; ++i )
cin >> x[i] >> y[i];
ceva c, d;
for ( i = 1; i < n; ++i )
for ( j = i + 1; j <= n; ++j )
{
c.a = y[j] - y[i];
c.b = x[j] - x[i];
if ( c. b < 0 )
{
c.a = c.a * (-1);
c.b *= -1;
}
v[++k] = c;
}
sort(v + 1, v + k + 1, cmp);
int cnt, rasp = 0;
for ( i = 2; i <= k; ++i )
{
//cout << "i-ul este " << i << endl;
cnt = 1;
while (i <= k && paralele(v[i], v[i - 1]) == true )
++i, ++cnt;
rasp += (cnt * (cnt - 1) / 2);
}
//cout << "----------------------------------------------" << endl;
cout << rasp << endl;
return 0;
}