Pagini recente » Cod sursa (job #3215832) | Cod sursa (job #2413848) | Cod sursa (job #2605589) | Cod sursa (job #49725) | Cod sursa (job #634090)
Cod sursa(job #634090)
#include <fstream>
#include <ctime>
#include <cstdlib>
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 Partition(int st,int dr){
int i=st,j=dr+1,pivot=st+((int)(rand())%(dr-st));
swap(v[st],v[pivot]);
pivot=v[st];
while(i<j){
do
++i;
while(v[i]<pivot);
do
--j;
while(v[j]>pivot);
if(j>i)
swap(v[i],v[j]);
}
swap(v[j],v[st]);
if(j==k){
out<<v[j];
return;
}
if(k<j)
Partition(st,j-1);
else{
Partition(j+1,dr);
}
}
int main(){
srand(time(NULL));
citire();
Partition(1,n);
return 0;
}