Pagini recente » Cod sursa (job #1915642) | Cod sursa (job #778058) | Istoria paginii utilizator/adelinaheroiu | Cod sursa (job #1265760) | Cod sursa (job #1255295)
#include <iostream>
#include <fstream>
#define max 3000001
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int v[max], n, k;
int qsort(int v[max], int left, int right)
{
int i, j, p, aux;
i=left-1;
j=right+1;
p= v[i+ rand()%(j-i+1)];
while(1)
{
do
{
i++;}
while(i<p);
do
{
j--;}
while(j>p);
if (i<j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else return j;
}
return 0;
}
void sdo(int v[max], int left, int right, int k)
{
if(left==right)
return;
int m,t;
m=qsort(v, left, right);
t=m-left+1;
if(t<=k)
sdo(v, left, m, k);
else
sdo(v, m+1, right, k-t);
}
int main()
{
int i;
fin>>n>>k;
for( i=0; i<n; ++i)
fin>>v[i];
sdo(v, 1, n, k);
fout<<v[i]<<' ';
return 0;
}