Pagini recente » Cod sursa (job #2651236) | Cod sursa (job #2241810) | Cod sursa (job #1394859) | Cod sursa (job #348127) | Cod sursa (job #3272216)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[100005];
int k;
int partitie(int v[],int st,int dr){
int piv=v[dr];
int bara=st-1;
for(int i=st;i<dr;i++){
if(v[i]<=piv){
bara++;
swap(v[i],v[bara]);
}
}
swap(v[dr],v[bara+1]);
return bara+1;//noua poz a pivotului
}
int quick_sort(int v[],int st,int dr){
if(st==dr)//daca a mai ramas doar un elem=> ala e
return v[st];
int poz_piv=partitie(v,st,dr);
if(poz_piv==k)//eu incerc sa le sortez pana la poz k
return v[poz_piv];
if(poz_piv>k){//aleg ce sortez in f de poz piv
return quick_sort(v,st,poz_piv-1);
}
else{
return quick_sort(v,poz_piv+1,dr);
}
}
int main()
{
int n;
fin>>n>>k;
for(int i=1;i<=n;i++){
fin>>v[i];
}
int rez= quick_sort(v,1,n);
fout<<rez;
return 0;
}