Pagini recente » Borderou de evaluare (job #2051236) | Cod sursa (job #417114) | Cod sursa (job #2634566) | Cod sursa (job #3200734) | Cod sursa (job #3175399)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
#define N_MAX 3000000
int v[N_MAX];
void quicksort(int k, int l, int r) {
int pivot = v[(l + r) / 2];
int st = l, dr = r;
while(v[st] < pivot) {
++st;
}
while(v[dr] > pivot) {
--dr;
}
while(st < dr) {
swap(v[st], v[dr]);
do
++st;
while(v[st] < pivot);
do
--dr;
while(v[dr] > pivot);
}
if(l < dr && k <= dr) {
quicksort(k, l, dr);
}else if(dr + 1 < r) {
quicksort(k, dr + 1, r);
}
}
int main()
{
int n, k, i;
fin >> n >> k;
for(i = 0; i < n; ++i) {
fin >> v[i];
}
quicksort(k, 0, n - 1);
fout << v[k - 1] << '\n';
fin.close();
fout.close();
return 0;
}