Pagini recente » Cod sursa (job #2775254) | Cod sursa (job #1801307) | Cod sursa (job #2311234) | Cod sursa (job #1713808) | Cod sursa (job #2833851)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
const int MAX_N = 3e6+5;
int v[MAX_N];
int n, k;
int quickSelect(int L, int R, int K){
if(L == R)
return v[K];
int P = (L + rand() % (R - L + 1)), B = L, E = R;
while(v[B] < v[P])
B++;
while(v[E] > v[P])
E--;
while(B < E){
swap(v[B], v[E]);
do B++; while(v[B] < v[P]);
do E--; while(v[E] > v[P]);
}
if(K <= B)
return quickSelect(L , B, K);
else
return quickSelect(B+1, R, K);
}
int main (){
fin>>n>>k;
for(int i=1; i<=n; i++)
fin>>v[i];
fout<<quickSelect(1, n, k);
return 0;
}