Pagini recente » Cod sursa (job #3167480) | Cod sursa (job #1650608) | Cod sursa (job #2669755) | Cod sursa (job #2393629) | Cod sursa (job #2273617)
#include<fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
int v[3000002];
int part(int st, int dr){
int i = st - 1, j = dr + 1, p = v[(st+dr)/2];
while(1)
{
do
{
++i;
} while(v[i] < p);
do
{
--j;
} while(p < v[j]);
if(i < j)
swap(v[i], v[j]);
else
return j;
}
}
void quicksort(int st, int dr, int k)
{
if(dr == st)
return;
int q = part(st, dr);
int t = q-st+1;
if(t >= k)
quicksort(st, q, k);
else
quicksort(q+1, dr, k-t);
}
int main()
{
srand(time(NULL));
int n, i, k;
ifstream f("sdo.in");
ofstream g("sdo.out");
f>>n>>k;
for(i = 1; i <=n ; i++)
f>>v[i];
quicksort(1, n, k);
g<<v[k];
}