Pagini recente » Cod sursa (job #1596142) | Cod sursa (job #645083) | Cod sursa (job #2461379) | Cod sursa (job #16675) | Cod sursa (job #2308457)
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int v[3000005], n, i, k;
int partitie(int st, int dr)
{
int poz=rand()%(dr-st+1)+st;
swap(v[st], v[poz]);
int pivot=v[st];
while(st<dr)
{
while(st<dr&&v[st]<pivot)
st++;
while(st<dr&&v[dr]>pivot)
dr--;
swap(v[st], v[dr]);
}
v[st]=pivot;
return st;
}
void quick(int st, int dr)
{
if(st==dr)
return;
int poz=partitie(st, dr);
if(poz==k)
return;
else if(poz>=k)
quick(st, poz);
else quick(poz+1, dr);
}
int main()
{
srand(time(NULL));
fin >> n >> k;
for(i=1;i<=n;i++)
fin >> v[i];
quick(1, n);
fout << v[k];
return 0;
}