Cod sursa(job #1016925)

Utilizator Dayanna000Amegica Dayanna Dayanna000 Data 26 octombrie 2013 21:55:06
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.65 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
long a[3000001],n,k;
ifstream f("sdo.in");
ofstream g("sdo.out");
void quicksort(long a[], long stanga, long dreapta)
    {
       long i, j, piv, aux,x,y,z,mi,ma;
       if(stanga>=dreapta)
         return ;
       i=stanga;
       j=dreapta;
       x=a[rand()%(j-i+1)+i];
       srand(time(0));
       y=a[rand()%(j-i+1)+i];
       srand(time(0));
       z=a[rand()%(j-i+1)+i];
       srand(time(0));
       if(x<=y && x<=z)
          mi=x;
       if(y<=x && y<=z)
          mi=y;
       if(z<=x && z<=y)
          mi=z;
       if(x>=y && x>=z)
          ma=x;
       if(y>=x && y>=z)
          ma=y;
       if(z>=x && z>=y)
          ma=z;
       //piv=x+y+z-max-min;
       if(ma==x)
         {
             if(mi==y)
             piv=z;
             else
             piv=y;
         }
         else
        if(ma==y)
           {
               if(mi==x)
                 piv=z;
                 else
                 piv=x;
           }
           else
           {
               if(mi==x)
                 piv=y;
                 else
                 piv=x;
           }
      while(i<=j)
      {
       while(a[i]<piv)
          i++;
       while(a[j]>piv)
          j--;
        if(i<=j)
        {
           aux=a[i];
           a[i]=a[j];
           a[j]=aux;
           i++;
           j--;
         }
      }
    if(k<=j)
       quicksort(a,stanga,j);
       else
       quicksort(a,i,dreapta);
    }

  int main()
{
    long i,j,l;
    f>>n>>k;
    for(i=1;i<=n;i++)
          f>>a[i];
      quicksort(a,1,n);
      g<<a[k];
    f.close();
    g.close();
    return 0;
}