Cod sursa(job #1047377)

Utilizator leontinLeontin leontin Data 4 decembrie 2013 12:17:56
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
#include<iostream>



using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");

int k=0;
long i,j,n,nrel=0,sumamax=0,suma=0;
double a[1001],b[1001],v[1000000];
void quick(double v[1000000], int left, int right)
{
    int i = left, j = right;
    double  tmp;
    double pivot = v[(left + right) / 2];

    while (i <= j)
    {
        while (v[i] < pivot)
            i++;
        while (v[j] > pivot)
            j--;
        if (i <= j)
        {
            tmp = v[i];
            v[i] = v[j];
            v[j] = tmp;
            i++;
            j--;
        }
    }
    if (left < j)
        quick(v, left, j);
    if (i < right)
        quick(v,i, right);
}

int main()
{



    f>>n;
    for(i=1; i<=n; i++)
        f>>a[i]>>b[i];
    for(i=1; i<n; i++)
        for(j=i+1; j<=n; j++)
        {
            nrel++;

            if(a[j]-a[i]==0)
            {
                v[nrel]=0.07490898989;
                // call me !!!
            }
            else
            v[nrel]=(a[i]-a[j])/(b[i]-b[j])*1.0000;
        }

        quick(v,1,nrel);

    //for(i=1;i<=nrel;i++)
    //g<<v[i]<<endl;


    for(i=1;i<nrel;i++)
    if(v[i]==v[i+1])
    suma++;
    else
    {
        sumamax+=suma*(suma+1)/2;
        suma=0;
    }


    sumamax+=suma*(suma+1)/2;


    g<<sumamax;





}