Cod sursa(job #1014846)

Utilizator tavi.belu1994FMI Belu Andrei Octavian tavi.belu1994 Data 23 octombrie 2013 15:51:17
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <iostream>
#include <cstdio>
FILE *f,*g;
using namespace std;

void quickSort(float arr[1001], 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[1001];
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;
}