Pagini recente » Cod sursa (job #911221) | Cod sursa (job #2194244) | Cod sursa (job #2716251) | Cod sursa (job #1070133) | Cod sursa (job #2411726)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#define NMAX 3000000
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int n,k,sir[NMAX+1];
int part(int in,int sf){
int i=in-1,j=sf+1,piv=sir[in+rand()%(sf-in+1)];
while(1){
do{
i++;
}while(sir[i]<piv);
do{
j--;
}while(sir[j]>piv);
if(i<j){
swap(sir[i],sir[j]);
}else{
return j;
}
}
}
void qsort(int in,int sf,int k0){
if(in>=sf){
return;
}
int j=part(in,sf);
int aux=j-in+1;
if(aux>=k0){
qsort(in,j,k0);
}else{
qsort(j+1,sf,k0);
}
}
int main(){
srand(clock());
f>>n>>k;
for(int i=1;i<=n;i++){
f>>sir[i];
}
qsort(1,n,k);
g<<sir[k];
f.close();
g.close();
}