Pagini recente » Cod sursa (job #1893832) | Cod sursa (job #1030018) | Cod sursa (job #1257870) | Monitorul de evaluare | Cod sursa (job #633353)
Cod sursa(job #633353)
#include <fstream>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
const int N=3000010;
int n,k,v[N];
void citire(){
int i;
in>>n>>k;
for(i=1;i<=n;i++){
in>>v[i];
}
}
void schimba(int x,int y){
int aux;
aux=v[x];
v[x]=v[y];
v[y]=aux;
}
void Partition(int st,int dr){
int i=st-1,j=dr+1,m=(st+dr)/2,pivot=v[st];
while(i<j){
do{
i++;
}while(v[i]<pivot);
do{
j--;
}while(v[j]>pivot);
if(j>i)
schimba(i,j);
else
break;
}
// schimba(i,st);
if(j==k){
out<<v[j];
return;
}
if(k<j)
Partition(st,j-1);
else{
Partition(j+1,dr);
}
}
int main(){
citire();
Partition(1,n);
return 0;
}