Pagini recente » Cod sursa (job #2550339) | Cod sursa (job #1295805) | Cod sursa (job #2334492) | Cod sursa (job #1687460) | Cod sursa (job #3175084)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
// am dat copy paste pentru a putea intelege mai bine quicksort*
void qsort(int v[], int begin, int end) {
int pivot = v[begin + rand() % (end - begin + 1)]; // alegem pivotul aleator
int b = begin, e = end;
while (v[b] < pivot) // cauta primul element mai mare sau egal cu pivotul
b++;
while (v[e] > pivot) // cauta primul element mai mic sau egal cu pivotul
e--;
while(b < e) { // daca indicii nu s-au atins
swap(v[b], v[e]); // interschimba pozitiile
do // cauta primul element mai mare sau egal cu pivotul
b++;
while (v[b] < pivot);
do // cauta primul element mai mic sau egal cu pivotul
e--;
while (v[e] > pivot);
}
// acum [begin..e] sunt mai mici sau egale cu pivotul
if (begin < e)
qsort(v, begin, e);
// si [e+1..end] sunt mai mari sau egale cu pivotul
if (e + 1 < end)
qsort(v, e + 1, end);
}
int main(){
ifstream cin("sdo.in");
ofstream cout("sdo.out");
int nr,cat;
cin>>nr>>cat;
int sir[nr];
for(int i=0;i<nr;i++){
cin>>sir[i];
}
qsort(sir,0,nr-1);
cout<<sir[cat-1];
return 0;
}