Cod sursa(job #374259)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 16 decembrie 2009 15:40:50
Problema Statistici de ordine Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
# include <stdio.h>
# include <stdlib.h>
int a[3000005],i,n,aux,k,x,y;

     void poz (int i,int j)
   {
     int ok=0;
    while (i!=j)
    {

     if (a[i]>a[j])
     {
      if (ok==0)
       ok=1;
      else
       ok=0;

      aux=a[i];
      a[i]=a[j];
      a[j]=aux;

      }


     if (ok==0)
     j--;
     else
     i++;

     }
   x=i;

 }












    int rez (int i,int j)
   {
     if (x==k)
     return a[x];

      else
      {
      if (j>i)
      y=(rand ()% (j-i))+i;
      aux=a[i];
      a[i]=a[y];
      a[y]=aux;
      poz (i,j);




       if (x<k)
	{

      return	rez (x+1,j);



	}
       else
	{

      return  rez (i,x-1);


	 }

      }






      }




int main ()
{
freopen ("sdo.in","r",stdin);
freopen ("sdo.out","w",stdout);
scanf ("%i%i",&n,&k);
for (i=1;i<=n;i++)
scanf ("%i",&a[i]);


printf ("%i",rez (1,n));

return 0;
}