Pagini recente » Borderou de evaluare (job #2872912) | Cod sursa (job #751654) | Cod sursa (job #1027572) | Cod sursa (job #684721) | Cod sursa (job #2378094)
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
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;
}
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 main()
{
int n, k;
in >> n >> k;
int v[n + 1];
for(int i = 1; i <= n; i++)
{
in >> v[i];
}
srand(time(0));
int p;
for(int i = n; i > 0; i--)
{
p = rand()%i + 1;
swap(v[i-1], v[p]);
}
for(int i = 1; i <= n; i++)
{
out << v[i] << ' ';
}
out << '\n';
qs(v, 1, n, k);
out << v[k] << '\n';
return 0;
}