Pagini recente » Cod sursa (job #89216) | Cod sursa (job #469416) | Cod sursa (job #1797821) | Cod sursa (job #2295695) | Cod sursa (job #2291360)
#include <bits/stdc++.h>
using namespace std;
const int N = 3e6 + 2;
int n, k, a[N];
int partitie(int st, int dr) {
int pivot = a[dr], i = st;
for(int j = st; j < dr; ++j) {
if(a[j] <= pivot) {
swap(a[i], a[j]);
++i;
}
}
swap(a[i], a[dr]);
return i;
}
void klea(int st, int dr, int kk) {
if(st == dr) return;
int pivot = st + rand() % (dr - st + 1);
swap(a[pivot], a[dr]);
int poz = partitie(st, dr);
if(poz - st + 1 >= kk)
return klea(st, poz, kk);
return klea(poz + 1, dr, kk - (poz - st + 1));
}
int main() {
ifstream cin("sdo.in");
ofstream cout("sdo.out");
cin >> n>>k;
srand(time(0));
for(int i = 1; i <= n; ++i)
cin >> a[i];
klea(1,n,k);
cout<<a[k];
}