Pagini recente » Cod sursa (job #643889) | Cod sursa (job #2886441) | Cod sursa (job #3321077) | Cod sursa (job #514951) | Cod sursa (job #3347727)
/*
author: qvalentin
dumnezeu sa o ierte...
chr(69) + chr(88) + chr(88)
*/
#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
#define pb push_back
#define MOD 1000000007
#define fastio ios_base::sync_with_stdio(0); cin.tie(nullptr);
int di[4]={0,0,-1,1};
int dj[4]={-1,1,0,0};
string FILENAME="sdo";
ifstream f(FILENAME+".in");
ofstream g(FILENAME+".out");
int a[3000001];
int partition(int a[], int l, int r){
int x=a[r];
int i=l-1;
for(int j=l;j<=r-1;++j){
if(a[j]<=x){
i++;
swap(a[i],a[j]);
}
}
swap(a[i+1],a[r]);
return i+1;
}
int randomized_partition(int a[], int l, int r){
srand(time(0));
int piv=l + rand() % (r-l+1);
swap(a[r],a[piv]);
return partition(a,l,r);
}
int quickselect(int a[], int l, int r, int i){
if(l==r)return a[l];
//pivot
int q=randomized_partition(a,l,r);
int k=q-l+1;
if(i==k)return a[q];
else if(i<k)return quickselect(a,l,q-1,i);
else return quickselect(a,q+1,r,i-k);
}
int main(){
#define cin f
#define cout g
int n,k;
cin>>n>>k;
for(int i=1;i<=n;++i)cin>>a[i];
cout<<quickselect(a,1,n,k);
return 0;
}