Cod sursa(job #658252)

Utilizator RalleRaluca Ralle Data 8 ianuarie 2012 14:12:43
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#include<cstdlib>
#include<stdio.h>
#include<time.h>
using namespace std;
ifstream in("sdo.in");
ofstream out("stdo.out");
int a[1000],n,k;
void citire()
{in>>n>>k;
 for(int i=1;i<=n;i++)
 in>>a[i];
}
int pivot(int st,int dr)
{int i=st-1,j=dr-1;
 int piv=a[st+(rand()%(dr-st+1))];
 while(i<j){
     while(a[i]< piv)i++;
     while(a[j]>piv) j--;
     if(i<j){int b=a[i];
             a[i]=a[j];
             a[j]=b;}
         else return j;
         }
 return 0;}                  

void quicks(int st,int dr,int k)
{int p=pivot(st-1,dr+1);
 if(st==dr) return;
    else if(k<p) quicks(st,p,k);
               else quicks(p+1,dr,k);
}
 int main()
 {srand(time(NULL));
  citire();
  quicks(1,n,k);
  out<<a[k];
  return 0;}