Pagini recente » Cod sursa (job #391061) | Cod sursa (job #3030202) | Cod sursa (job #484381) | Cod sursa (job #3238965) | Cod sursa (job #1183723)
#include <fstream>
#include <algorithm>
#include <stdlib.h>
#include <time.h>
#define dim 3000005
using namespace std;
int n,k,a[dim];
int part(int l,int r){
int pivot,i,j;
i=l;
j=r;
pivot = a[l+rand()%(r-l+1)];
while(1){
do{i++;}while(a[i]<pivot);
do{j++;}while(a[j]>pivot);
if(i<j)
swap(a[i],a[j]);
else return j;
}
}
void sdo(int l,int r,int k){
int q,t;
if(l==r) return;
q=part(l,r);
t=q-l+1;
if(t<k){ //daca se afla in dreapta
sdo(t+1,r,k-t);
} //altfel daca se afla in stanga
else sdo(l,t,k);
}
int main(){
ifstream f("sdo.in");
ofstream g("sdo.out");
f >> n >> k;
srand(time(NULL));
for(int i=1;i<=n;i++)
f >> a[i];
sdo(1,n,k);
g << a[k];
}