Pagini recente » Cod sursa (job #632659) | Cod sursa (job #589476) | Cod sursa (job #729816) | Borderou de evaluare (job #603670) | Cod sursa (job #2378070)
#include <fstream>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
const int N = 3000001;
int v[N];
void QS(int v[], int st, int dr, int k);
int Partitie(int v[], int st, int dr);
int main()
{
int n, k;
in >> n >> k;
for(int i=1; i<=n; i++) in >> v[i];
QS(v, 1, n, k);
out << v[k];
return 0;
}
void QS(int v[], int st, int dr, int k)
{
if(st>=dr) return;
int m=Partitie(v, st, dr);
if(k<m) QS(v, st, m-1, k);
if(k>m) QS(v, m+1, dr, k);
}
int Partitie(int v[], int st, int dr)
{
int m=st;
for(int i=st; i<dr; i++)
{
if(v[i]<v[dr]) swap(v[i], v[m++]);
}
swap(v[m], v[dr]);
return m;
}