Pagini recente » Cod sursa (job #1750114) | Cod sursa (job #1908944) | Cod sursa (job #2015198) | Cod sursa (job #266956) | Cod sursa (job #2077931)
#include <fstream>
#include <stdlib.h>
using namespace std;
int n, a[300005],k;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
void Citire()
{
cin>>n;
cin>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
}
int partitie(int left,int right)
{
int pivot=left + (rand() % (right-left+1));
int valPivot=a[pivot];
int storeIndex=left;
swap(a[pivot],a[right]);
for(int i=left;i<right;i++)
{
if(a[i]<valPivot)
{
swap(a[i],a[storeIndex]);
storeIndex++;
}
}
swap(a[storeIndex],a[right]);
return storeIndex;
}
void Find(int p, int q, int k)
{
if(p==q) {cout<<a[p];exit(0);}
int r=partitie(p, q);
if(k==r) {cout<<a[r];exit(0);}
else if(k<r) Find(p, r-1,k);
else Find(r+1,q, k);
}
int main()
{
Citire();
Find(1, n, k);
return 0;
}