Pagini recente » Cod sursa (job #711678) | Cod sursa (job #1628447) | Cod sursa (job #2334663) | Cod sursa (job #2107567) | Cod sursa (job #1533096)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
const int maxn = 3000005;
int a[maxn];
int nthElement(int *a, int n, int k) {
swap(a[rand() % n + 1], a[n]);
int left = 1;
for(int i = 1 ; i < n ; ++ i)
if(a[i] <= a[n])
swap(a[i], a[left ++]);
swap(a[left], a[n]);
if(k == left)
return a[left];
if(k < left)
return nthElement(a, left, k);
return nthElement(a + left, n - left, k - left);
}
int main() {
ifstream fin("sdo.in");
ofstream fout("sdo.out");
srand(time(NULL));
int n, k;
fin >> n >> k;
for(int i = 1 ; i <= n ; ++ i)
fin >> a[i];
fout << nthElement(a, n, k) << ' ';
}