Pagini recente » Cod sursa (job #3157040) | Monitorul de evaluare | Cod sursa (job #1214397) | Cod sursa (job #816061) | Cod sursa (job #2378124)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[3000001];
int partitie(int v[], int st, int dr)
{
int a = st;
for(int i = st; i < dr; i++)
{
if(v[i] < v[dr])
{
swap(v[i], v[a++]);
}
}
swap(v[a], v[dr]);
return a;
}
void qs(int v[], int st, int dr, int k)
{
if(st >= dr)
{
return;
}
int b = partitie(v, st, dr);
if(k < b)
{
qs(v, st, b - 1, k);
}
else
{
qs(v, b + 1, dr, k);
}
}
int main()
{
int n, k, i;
fin >> n >> k;
for(i = 1; i <= n; i++)
fin >> v[i];
srand(time(0));
for(int i = n; i > 0; i--)
{
int p = rand()%i;
swap(v[i - 1], v[p]);
}
qs(v, 0, n, k);
fout << v[k];
return 0;
}