Pagini recente » Cod sursa (job #305048) | Cod sursa (job #3208774) | Cod sursa (job #1709141) | Cod sursa (job #1983489) | Cod sursa (job #1533094)
#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) {
if(n == 1)
return a[1];
int pivot = a[rand() % n + 1];
swap(a[pivot], a[n]);
int left = 0;
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) << ' ';
}