Pagini recente » Cod sursa (job #2118991) | Cod sursa (job #2196364) | Cod sursa (job #492331) | Cod sursa (job #1854081) | Cod sursa (job #3326964)
#include <fstream>
const int MAXN = 3e6;
int arr[MAXN];
void qsel(int begin, int end, int poz) {
int b = begin, e = end, pivot = arr[(begin + end) / 2];
while (arr[b] < pivot)
++b;
while (arr[e] > pivot)
--e;
while (b < e) {
arr[b] ^= arr[e];
arr[e] ^= arr[b];
arr[b] ^= arr[e];
do
++b;
while (arr[b] < pivot);
do
--e;
while (arr[e] > pivot);
}
if (begin < e && poz < e)
qsel(begin, e, poz);
else if (e + 1 < end)
qsel(e + 1, end, poz);
}
int main() {
std::ifstream fin;
std::ofstream fout;
int n, k, i;
fin.open("sdo.in");
fin >> n >> k;
for (i = 0; i < n; ++i) {
fin >> arr[i];
}
fin.close();
qsel(0, n - 1, k - 1);
fout.open("sdo.out");
fout << arr[k - 1] << '\n';
fout.close();
return 0;
}