Pagini recente » Cod sursa (job #1753530) | Cod sursa (job #1511503) | Cod sursa (job #2198239) | Cod sursa (job #1355531) | Cod sursa (job #1019870)
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
int n,
v[100000],
k;
int div(int v[], int l, int r) {
int i = l - 1,
j = r + 1,
p = v[l + (rand()%(r - l + 1))];
while(1) {
do {
++i;
} while(v[i] < p);
do {
--j;
} while(v[j] > p);
if(i < j) {
int aux;
aux = v[i];
v[i] = v[j];
v[j] = aux;
} else
return j;
}
return 0;
}
void qSort(int v[], int l, int r, int k) {
if(l == r)
return;
int x = div(v, l, r);
int y = x - l + 1;
if(y >= k)
qSort(v, l, x, k);
else
qSort(v, x + 1, r, k - y);
}
int main () {
ifstream f("sdo.in");
ofstream g("sdo.out");
srand(time(NULL));
f >> n >> k;
for(int i = 1; i <= n; i++)
f >> v[i];
qSort(v, 1, n, k);
g << v[k];
f.close();
g.close();
}