Cod sursa(job #1068839)

Utilizator IonMosnoiIon Mosnoi IonMosnoi Data 28 decembrie 2013 20:20:32
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
#define M (l+(r-l)/2)

using namespace std;
const int maxn = 3080000;
int n,a[maxn],k;



int find(int l=1,int r=n,int p=k){
	if(l==r && r == k)return a[k];
	unsigned i=l,j=r;
	unsigned  mij = a[M];	
	do{
		while(a[i]<mij)i++;
		while(mij<a[j])j--;
		if (i<=j){
		    swap(a[i],a[j]);	
			i++;
			j--;
		}		
	}while(i<=j);	
	if(l<=j && p<=j && l<=p) return find(l,j,p);
    if(i<=r && p<=r && i<=p) return find(i,r,p);
}


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



 printf("%d",find());


    
  
  
}