Pagini recente » Cod sursa (job #2651401) | Cod sursa (job #1392897) | Cod sursa (job #2163701) | Cod sursa (job #1201185) | Cod sursa (job #2540440)
#include <bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int n, k;
int v[3000005];
int poz (int st, int dr){
int j, x;
x = st + rand ()%(dr - st + 1);
swap (v[x], v[st]);
j = 0;
while (st < dr){
if (v[st] > v[dr]){
swap (v[st], v[dr]);
j = 1 - j;
}
st += j;
dr -= 1 - j;
}
return st;
}
int cuicsort (int st, int dr, int k){
if (st == dr){
return v[st];
}
int p = poz (st, dr);
if (p == k){
return v[k];
}
else if (p > k){
return cuicsort (st, p - 1, k);
}
else{
return cuicsort (p + 1, dr, k);
}
}
int main(){
cin >> n >> k;
for (int i=1; i<=n; i++){
cin >> v[i];
}
srand (time(0));
cout << cuicsort (1, n, k);
return 0;
}