Cod sursa(job #1032737)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 16 noiembrie 2013 00:27:54
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include<algorithm>
#include<ctime>
#include<cstdlib>
#include<stdio.h>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
long i,j,n,nr=0,nr2=0,q,k=0;
double a[1001],b[1001],v[5000501],aux;
void qksort(long st,long dr)
{long i=st,j=dr;
 double piv,aux;
 piv=v[i+rand()%(j-i+1)];
 while(i<=j)
   {
    while(v[i]<piv)
        i++;
    while(v[j]>piv)
        j--;
    if(i<=j)
      {aux=v[i];v[i]=v[j];v[j]=aux;i++;j--;}
   }
 if(st<j)
    qksort(st,j);
 if(i<dr)
    qksort(i,dr);
}
int main()
{srand(time(0));
 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++)
      if(a[j]-a[i]==0)
        {if(k)
            nr2=(k*(k+1))/2;
         k++;
        }
      else
        {nr++;
         v[nr]=(b[j]-b[i])/(a[j]-a[i]);
        }
 qksort(1,nr);
 i=1;j=0;q=0;
 while(i<nr)
   {if(v[i]==v[i+1])
      {j++;
       q=(j*(j+1))/2;
      }
    else
      {nr2+=q;q=0;j=0;
      }
    i++;
   }
 nr2+=q;
 g<<nr2;
 f.close();g.close();
 return 0;
}