Pagini recente » Cod sursa (job #3355698) | Cod sursa (job #3344976) | Cod sursa (job #3321177) | Cod sursa (job #3328872) | Cod sursa (job #3356765)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
using namespace std;
int n,k;
int arr[3000001];
void find(int target,int l,int r) {
if (l>=r) return;
int pos=rand()%(r-l+1)+l;
int val=arr[pos];
int i=l,j=r;
while(i<=j) {
while(arr[i]<val)i++;
while(arr[j]>val)j--;
if (i<=j) {
swap(arr[i], arr[j]);
i++;
j--;
}
}
if (target<=j) find(target,l,j);
else if (target>=i) find(target,i,r);
}
int main() {
ifstream f("sdo.in");
ofstream g("sdo.out");
f>>n>>k;
for (int i=1;i<=n;i++)f>>arr[i];
find(k,1,n);
g<<arr[k];
return 0;
}