Pagini recente » Cod sursa (job #1329540) | Arhiva de probleme | Clasament mf_boss3 | Cod sursa (job #1476989) | Cod sursa (job #1784080)
#include<fstream>
#include<cstdlib>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int v[3000001],n,k;
void schimb(int &a,int &b)
{
int aux;
aux=a;
a=b;
b=aux;
return;
}
int part(int st, int dr)
{
int i,j;
i=st+rand()%(dr-st+1);
schimb(v[i],v[dr]);
j=st;
for(i=st;i<dr;i++)
if(v[i]<v[dr])
schimb(v[i],v[j++]);
schimb(v[j],v[dr]);
return j;
}
void qs(int st, int dr, int poz)
{
if(st>=dr)
return;
int p=part(st,dr);
if(p>poz)
qs(st,p-1,poz);
else
if(p<poz)
qs(p+1,dr,poz);
else
return;
}
int main()
{
f>>n>>k;
int i;
for(i=1;i<=n;i++)
f>>v[i];
qs(1,n,k);
g<<v[k];
return 0;
}