Pagini recente » Cod sursa (job #836852) | Rating Teodoriu Lucian Gabriel (LucianGabrielTeodoriu) | Cod sursa (job #848147) | Cod sursa (job #2458893) | Cod sursa (job #1385664)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
ofstream out("sdo.out");
int k;
int numere[3000001];
void sdo(int inceput,int sfarsit)
{
int i=inceput;
int j=sfarsit;
int mij=numere[rand()%(sfarsit-inceput+1)+inceput];
while (i<=j)
{
while (numere[i]<mij){i++;}
while (numere[j]>mij){j--;}
if (i<=j)
{
swap(numere[i],numere[j]);
i++;
j--;
}
}
if (i-j==2&&j+1==k)
{
out<<numere[j+1];
}
else if (i==j==k)
{
out<<numere[i];
}
else
{
if (j<k)
{
sdo(i,sfarsit);
}
else
{
sdo(inceput,j);
}
}
}
int main()
{
ifstream in("sdo.in");
int n,i;
in>>n;
in>>k;
for (i=1;i<=n;i++)
{
in>>numere[i];
}
sdo(1,n);
}