Pagini recente » Cod sursa (job #1094644) | Cod sursa (job #1847734) | Cod sursa (job #1282100) | Cod sursa (job #2857341) | Cod sursa (job #2834401)
#include<stdio.h>
#include<stdlib.h>
const int mx=3e6+1000;
int v[mx],n,k,aux;
inline void swap(int&a,int &b){
aux=b;
b=a;
a=aux;
}
int partition(int left,int right){
int pivot=v[right];
int j=left;
for(int i=left;i<=right;i++){
if(v[i]<=pivot){
swap(v[j],v[i]);
j++;
}
}
return j-1;
}
int find(int left, int right,int nth){
if(left==right){
return v[left];
}
int p=partition(left,right);
int lcount=p-left;
if(nth<=lcount){
return find(left,p-1,nth);
}
else{
return find(p,right,nth-lcount);
}
}
void read(){
FILE* fin=fopen("sdo.in","r");
fscanf(fin,"%d %d",&n,&k);
for(int i=0;i<n;i++){
fscanf(fin,"%d",&v[i]);
}
}
void solve(){
FILE* fout=fopen("sdo.out","w");
fprintf(fout,"%d ",find(0,n-1,k));
}
int main(){
read();
solve();
return 0;
}