Pagini recente » Cod sursa (job #609581) | Cod sursa (job #2872346) | Cod sursa (job #185716) | Cod sursa (job #3195124) | Cod sursa (job #1868322)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("sdo.in");
ofstream out("sdo.out");
int n, k;
int v[3000001];
int partition(int v[], int left, int right) {
int i = left, j = right;
int random = rand() % right + left;
int pivot = v[random];
while (i <= j) {
while (v[i] < pivot) i++;
while (v[j] > pivot) j--;
if (i <= j) {
int aux = v[i];
v[i] = v[j];
v[j] = aux;
i++; j--;
}
}
return i;
}
void quicksort(int v[], int left, int right, int k) {
if (left == right) return;
int index = partition(v, left, right);
int t = index - left + 1;
if (t >= k)
quicksort(v, left, index, k);
else
quicksort(v, index + 1, right, k - t);
}
int main()
{
in >> n >> k;
for (int i = 0; i < n; i++) {
in >> v[i];
}
quicksort(v, 0, n - 1, k);
out << v[k - 1];
}