Cod sursa(job #2241159)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 15 septembrie 2018 04:14:27
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <algorithm>
#include <iostream>
#define dif 0.00000001
#define Nmax 1005

using namespace std;

string file="trapez";

ifstream f( (file + ".in").c_str() );
ofstream g( (file + ".out").c_str() );

struct point{
double x, y;
}a[Nmax];

int n, ans, cnt;
double v[Nmax*Nmax];

double slope(int x1, int y1, int x2, int y2)
{
    double ans=(double)(y2-y1)/(x2-x1);
    return ans;
}

bool equal(int i, int j)
{
    if (v[i] - v[j] < dif)
        return 1;
    else
        return 0;
}

int main()
{
    f >> n;
    for ( int i = 1; i <= n; i ++ )
        f >> a[i].x >> a[i].y;
    for ( int i = 1; i < n; i ++ )
        for ( int j = i + 1; j <= n; j ++ )
            v[++cnt]=slope(a[i].x, a[i].y, a[j].x, a[j].y);

    sort(v+1, v+cnt+1);

    int eq = 1;
    for (int i = 2; i <= cnt; i ++)
        if (equal(i,i-1) == 1)
            eq ++;
        else
            {
            ans += eq * (eq - 1) / 2;
            eq = 1;
            }
    ans += eq * (eq - 1) / 2;
    g << ans;

    return 0;
}