Cod sursa(job #1071052)

Utilizator Catalina_BrinzaBrinza Catalina Catalina_Brinza Data 2 ianuarie 2014 15:05:07
Problema Trapez Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
//
//  main.cpp
//  trapez++
//
//  Created by Catalina Brinza on 1/2/14.
//  Copyright (c) 2014 Catalina Brinza. All rights reserved.
//

#include <fstream>
#define maximus 2000000000
using namespace std;
ifstream in("trapez.in");
ofstream out("trapez.out");
double v[5005001];
void quicksort(int f,int n)
{
    int p,j,i;
    
    if(f<n)
    {
        p=f;
        i=f;
        j=n;
        
        while(i<j){
            while(v[i]<=v[p]&&i<n)
                i++;
            while(v[j]>v[p])
                j--;
            if(i<j)swap(v[i],v[j]);
        }
        
        swap(v[p],v[j]);
        quicksort(f,j-1);
        quicksort(j+1,n);
        
    }
}


int main()
{int n,i,j,m=-1,s=0,q=0;
    int a[1001],b[1001];

    in>>n;
    for (i=0;i<n;++i)
        in>>a[i]>>b[i];
    for (i=0;i<n-1;++i)
        for (j=i+1;j<n;++j)
        {
            m++;
            if (a[i]==a[j]) v[m]=maximus;
            else v[m]=(float)(b[j]-b[i])/(a[j]-a[i]);
        }
    quicksort(0,m-1);
    for (i=0;i<m-1;++i)
        if (v[i]==v[i-1]) q++;
        else if (q!=1) {
            s+=(q*(q-1))/2;
            q=1;
        }
 
    out<<s;
    
    return 0;
}