Cod sursa(job #3030066)

Utilizator Andrei1209Andrei Mircea Andrei1209 Data 17 martie 2023 14:46:48
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#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;
}