Pagini recente » Cod sursa (job #3005220) | Cod sursa (job #2263448) | Cod sursa (job #609562) | Statistici Dascalu Laurentiu (LauRrR) | Cod sursa (job #2308482)
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
unsigned int a[3000005], n, k, rasp;
int partitie(int st, int dr)
{
int poz=rand()%(dr-st+1)+st;
swap(a[st], a[poz]);
unsigned int pivot=a[st];
while(st<dr)
{
while(st<dr&&a[dr]>=pivot)
dr--;
a[st]=a[dr];
while(st<dr&&a[st]<=pivot)
st++;
a[dr]=a[st];
}
a[st]=pivot;
return st;
}
void quick(int st, int dr)
{
if(st<dr)
{
int poz=partitie(st, dr);
if(poz==k)
return;
if(poz>k)
quick(st, poz-1);
else if(poz<k)
quick(poz+1, dr);
}
}
int main()
{
srand(time(NULL));
fin >> n >> k;
for(int i=1;i<=n;i++)
fin >> a[i];
quick(1, n);
fout << a[k];
return 0;
}