Pagini recente » Cod sursa (job #2575830) | Cod sursa (job #2536969) | Cod sursa (job #839867) | Cod sursa (job #1059438) | Cod sursa (job #1449082)
#include <fstream>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
const int N= 1000001;
int x[N], y[N],n,k,el;
inline void schimb(int &x, int &y) {
int aux = x;
x = y;
y = aux;
}
void part3(int a[N], int li, int lf, int &p1, int &p2) {
p1 = li;
p2 = lf - 1;
int i = li, piv = a[lf];
while (i <= p2) {
if (a[i] < piv)
schimb(a[i++], a[p1++]);
else if (a[i] > piv)
schimb(a[i], a[p2--]);
else
i++;
}
schimb(a[lf], a[++p2]);
}
void quicksort(int a[N], int li, int lf) {
int m1, m2;
if(li>=lf)
return;
//m=pozdiv(a,li,lf);
part3(a, li, lf, m1, m2);
if(k<m1)
quicksort(a, li, m1 - 1);
if(k>m2)
quicksort(a, m2 + 1, lf);
}
int main() {
in>>n>>k;
int i;
for(i=1; i<=n; i++)
in>>x[i];
quicksort(x,1,n);
out<<x[k];
return 0;
}