Cod sursa(job #2291107)

Utilizator cameliapatileaPatilea Catalina Camelia cameliapatilea Data 27 noiembrie 2018 16:27:44
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<iostream>
#include<fstream>
#include <algorithm>

using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
double v[1010030];
int n, k;
struct coordonate_punct{
    double x, y;
}p[1005];

int main()
{
int i, j;
    f >> n;
    for(i = 1; i <= n; i++)
    //citesc un struct pentru x si y 
        f >> p[i].x >> p[i].y;
    for( i = 1; i <= n; i++)
        for( j = i + 1; j <= n; j++) {
            // v[++k] = (double) ((p[j].y - p[i].y) / (p[j].x - p[i].x));
            //calculez panta
            v[++k]=(double)(p[j].x - p[i].x) / (p[j].y-p[i].y);
        }
        //sortez crescator dupa panta
    sort( v + 1, v + k + 1);
    int rezultat = 0;
    for( i = 1; i <= k; i++)
    {
        int nr  = 1;
        //cat timp indicele pe care ma aflu e mai mic decat nr de componente din vector si 2 elemente alaturate sunt egale
        while( i< k && v[i] == v[i+1])
        {
            //cresc indicele si maresc contorul care inregistreaza nr de trapeze
            i++;
            nr++;
        }
        
        rezultat =  rezultat + (nr * (nr-1)) / 2;
    }
    g << rezultat;

return 0;
}