Pagini recente » Cod sursa (job #455391) | Cod sursa (job #1988951) | Cod sursa (job #1960493) | Cod sursa (job #506346) | Cod sursa (job #2606832)
#include <bits/stdc++.h>
using namespace std;
const int Nmax=3000009;
int v[Nmax], n, k;
int part (int v[Nmax], int li, int lf)
{
int i=li-1,j=lf+1,p=v[li+(rand()%(lf-li+1))];
while (true)
{
do
{
++i;
}
while (v[i] <= p);
do
{
--j;
}
while (p < v[j]);
if (i < j)
{
swap (v[i], v[j]);
}
else
{
return j;
}
}
return 0;
}
void quick (int v[Nmax], int li, int lf, int k)
{
if (li==lf)
{
return;
}
int q=part(v, li, lf);
int t=q-li+1;
if (t>=k)
{
quick (v, li, q, k);
}
else
{
quick (v, q+1, lf, k-t);
}
}
int main()
{
ios::sync_with_stdio(0);
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
fin>>n>>k;
for(int i=1; i<=n; ++i)
{
fin>>v[i];
}
quick(v, 1, n, k);
fout<<v[k]<<"\n";
}