Pagini recente » Cod sursa (job #2625152) | Cod sursa (job #2113472) | Cod sursa (job #1628190) | Cod sursa (job #1038800) | Cod sursa (job #1806766)
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
const int N=3000001;
int v[N];
void schimb(int &a,int &b)
{
int c=a;
a=b;
b=c;
}
int partitie(int st,int dr)
{
int i,j,piv=v[dr];
for(i=j=st; i<dr; i++)
if(v[i]<piv)
{
schimb(v[i],v[j]);
j++;
}
schimb(v[j],v[dr]);
return j;
}
void qs(int st,int dr,int k)
{
if(st>=dr) return;
int p=partitie(st,dr);
if(k<p)
qs(st,p-1,k);
if(k>p)
qs(p+1,dr,k);
}
int main()
{
int n,i,j,st,p,k;
in>>n>>k;
for(i=1; i<=n; i++)
in>>v[i];
for(i=n; i>=1; i--)
{
j=1+rand()%i;
schimb(v[i],v[j]);
}
qs( 1, n,k);
out<<v[k];
return 0;
}