Pagini recente » Cod sursa (job #842300) | Cod sursa (job #1562745) | Cod sursa (job #643265) | Cod sursa (job #969562) | Cod sursa (job #2308487)
#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)
return;
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;
}