Cod sursa(job #1017312)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 27 octombrie 2013 17:24:23
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include<algorithm>
#include<ctime>
#include<cstdlib>
#include<stdio.h>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
bool k=0;
long i,j,n,nr=0,nr2=0,q;
float a[1001],b[1001],v[500501],piv;
int compare(const void *a, const void *b)
{
    return (*(float*)a - *(float*)b);
}
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++)
      if(a[j]-a[i]==0)
        {if(k)
            nr2++;
         k=1;
        }
      else
        {nr++;
         v[nr]=1.0*((1.0*(b[j]-b[i]))/(1.0*(a[j]-a[i])));
        }
 sort(v+1,v+nr+1,greater<float>());
 //qsort(v+1,nr+1,sizeof(float),compare);
 for(i=1;i<nr-1;i++)
   if(v[i]==v[i+1])
     nr2++;
 g<<nr2;
 f.close();g.close();
 return 0;
}
void qs(long st,long dr)
{
 i=st;j=dr;
  srand(time(0));
 q=i+rand()%(j-i+1);
 piv=v[q];
 while(i<=j)
   {while(v[i]<piv)
      i++;
    while(v[j]>piv)
      j--;
    if(i<=j)
      {float aux=v[i];v[i]=v[j];v[j]=aux;
       i++;j--;
      }
   }
 if(st<=j)
   qs(st,j);
 if(dr>=i)
   qs(i,dr);
 for(i=1;i<=nr;i++)
    g<<v[i]<<" ";
 g<<'\n';
}