Pagini recente » Cod sursa (job #3324947) | Cod sursa (job #3324946) | Cod sursa (job #2531258) | Cod sursa (job #3345697) | Cod sursa (job #3349593)
#include <iostream>
#include <fstream>
using namespace std;
//
int a[3000001];
int n,k;
int partitie(int l, int r)
{
int pivot=a[r], i=l-1;
for(int j=l;j<r;j++)
{
if(a[j]<=pivot)
{
i++;
int t=a[i];a[i]=a[j];a[j]=t;
}
}
int t=a[i+1];a[i+1]=a[r];a[r]=t;
return i+1;
}
int quickselect(int l, int r, int k)
{
if(l==r) return a[l];
int p=partitie(l,r);
int rank=p-l+1;
if(rank==k) return a[p];
else if(k<rank) return quickselect(l,p-1,k);
else return quickselect(p+1,r,k-rank);
}
int main()
{
ifstream fin("sdo.in");
ofstream fout("sdo.out");
fin>>n>>k;
for(int i=0;i<n;i++) fin>>a[i];
fout<<quickselect(0,n-1,k);
return 0;
}