Pagini recente » Cod sursa (job #880983) | Cod sursa (job #880333) | Cod sursa (job #1491033) | Cod sursa (job #2692232) | Cod sursa (job #2819071)
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
const unsigned int nMax = 3000000;
unsigned int v[nMax];
void statistici_ordine(int start, int stop, int k) {
int st = start;
int dr = stop;
unsigned int pivot = v[rand() % (stop - start + 1) + start];
while (st <= dr) {
while (v[st] < pivot) {
st++;
}
while (v[dr] > pivot) {
dr--;
}
if (st <= dr) {
swap(v[st], v[dr]);
st++;
dr--;
}
}
if (start < dr && k <= dr)
statistici_ordine(start, dr, k);
else if (stop > st && k >= st)
statistici_ordine(st, stop, k);
}
int main() {
ifstream fin("sdo.in");
ofstream fout("sdo.out");
srand(time(NULL));
int n, k;
fin >> n >> k;
for (int i = 0; i < n; i++)
fin >> v[i];
k--;
statistici_ordine(0, n - 1, k);
fout << v[k];
fin.close();
fout.close();
return 0;
}