Cod sursa(job #1047227)

Utilizator tavi.belu1994FMI Belu Andrei Octavian tavi.belu1994 Data 4 decembrie 2013 02:28:06
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.72 kb
#include <iostream>
#include <cstdio>
FILE *f,*g;
using namespace std;

void quickSort(float arr[1000001], int left, int right){

      int i = left, j = right;
      float tmp;
      float pivot = arr[(left + right) / 2];
      while (i <= j)
      {
            while (arr[i] < pivot)
                  i++;
            while (arr[j] > pivot)
                  j--;
            if (i <= j)
            {
                  tmp = arr[i];
                  arr[i] = arr[j];
                  arr[j] = tmp;
                  i++;
                  j--;
            }
      }
      if (left < j)
            quickSort(arr, left, j);
      if (i < right)
            quickSort(arr, i, right);
}


int main(){
    f=fopen("trapez.in","r");
    g=fopen("trapez.out","w");
    int N,i,j;
    long A[1001][2];
    float pante[1000001];
    int k=0;
    fscanf(f,"%d",&N);
    for(i=1;i<=N;i++)
    {
        fscanf(f,"%d%d",&A[i][0],&A[i][1]);
    }

    for(i=1;i<N;i++)
    {
        for(j=i+1;j<=N;j++)
        {
            k++;
            if(A[j][0]!=A[i][0])
            {
                pante[k]=((A[j][1]-A[i][1])*1.0000/(A[j][0]-A[i][0]));
            }
            else
            {
                pante[k]=-1;
            }
        }
    }
    quickSort(pante,1,k);
    long nr=0,p,t,sum;
    for(i=1;i<k;i++)
    {
        sum=0;
        p=i;
        if(pante[i]==pante[i+1])
        {
            p=i+1;
            t=1;
            sum=1;
            while(pante[p]==pante[p+1])
            {
                p++;
                t++;
                sum=sum+t;
            }
        }
        nr=nr+sum;
        i=p;
    }
    fprintf(g,"%d",nr);
    return 0;
}