Cod sursa(job #2290793)

Utilizator cameliapatileaPatilea Catalina Camelia cameliapatilea Data 26 noiembrie 2018 23:46:17
Problema Trapez Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
struct coordonate_punct{
    int x, y;
}p[1005];
double v[1010030];
void ms(int i, int m, int j)
{
    int x,y,k;
    double w[1010030];
    x = i;
    y = (m + 1);
    k = 1;
    while(x <= m && y <= j)
        if(v[x] < v[y])
        {
            w[k++] = v[x++];
        }
        else
        {
            w [k++] = v[y++];

        }
    while(x <= m)
    {
        w[k++] = v[x++];

    }
    while(y <= j) {
        w[k++] = v[y++];
    }


}
void dei(int i,int j)
{
    int m;
    if(i<j)
    {
        m=(i+j)/2;
        dei(i,m);
        dei(m+1,j);
        ms(i,m,j);
    }
}
int main()
{
    int n, k = 0;

    f >> n;
    for(int i = 1; i <= n; i++)
        f >> p[i].x >> p[i].y;
    for(int i = 1; i <= n; i++)
        for(int j = i + 1; j <= n; j++) {
            v[++k] = (double) ((p[j].x - p[i].x) / (p[j].y - p[i].y));
        }
        dei(1, k);
        int rezultat = 0;
        for( int i = 1; i <= k; i++)
        {
            int nr  = 1;
            while( i< k && v[i] == v[i+1])
            {
                i++;
                nr++;
            }
            rezultat =  rezultat + (nr * (nr-1)) / 2;
        }
        g << rezultat;


}