Pagini recente » Cod sursa (job #2965036) | Cod sursa (job #1666297) | Cod sursa (job #2410061) | Cod sursa (job #3277305) | Cod sursa (job #2198280)
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
int v[100001],k;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
void partitie3(int v[],int st,int dr,int &p,int &u)
{
int pivot=v[dr];
int i=st;
p=st;
u=dr;
while(i<=u)
{
if(v[i]<pivot)
swap(v[i++],v[p++]);
else if(v[i]>pivot)
swap(v[i],v[u--]);
else
i++;
}
p--;
u++;
}
void qs(int v[],int st,int dr)
{
if(st>=dr)
return;
int p,u;
partitie3(v,st,dr,p,u);
if(k>=st && k<=dr) qs(v,st,p);
else if(k>=u && k<=dr) qs(v,u,dr);
else return;
}
int main()
{
int n,i,j;
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>v[i];
srand(time(0));
for(int i=n;i>=1;i--)
{
j=rand()%i+1;
swap(v[i],v[j]);
}
qs(v,1,n);
fout<<v[k];
return 0;
}