Pagini recente » Cod sursa (job #404320) | Cod sursa (job #1236826) | Cod sursa (job #1014533) | Cod sursa (job #2945400) | Cod sursa (job #2819068)
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
const unsigned int nMax = 4000000;
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)
statistici_ordine(start, dr, k);
if (stop > st)
statistici_ordine(st, stop, k);
}
int main() {
ifstream fin("sdo.in");
ofstream fout("sdo.out");
srand(time(NULL));
unsigned int n, k;
fin >> n >> k;
for (int i = 0; i < n; i++)
fin >> v[i];
statistici_ordine(0, n - 1, k);
fout << v[k-1];
fin.close();
fout.close();
return 0;
}