Pagini recente » Cod sursa (job #2027180) | Cod sursa (job #3219437) | Cod sursa (job #1500269) | Cod sursa (job #2256826) | Cod sursa (job #2394957)
#include <bits/stdc++.h>
#define N 3000010
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int partitie(int st,int dr,int *A)
{
int p=rand()%(dr-st+1)+st;
swap(A[p],A[dr]);
int pivot=A[dr],pIndex=st;
for(int i=st;i<dr;i++)
{
if(A[i]<=pivot)
{
swap(A[i],A[pIndex]);
pIndex++;
}
}
swap(A[pIndex],A[dr]);
return pIndex;
}
int quick(int st,int dr,int *A,int x)
{
int ind=partitie(st,dr,A);
if(ind==x)return A[ind];
if(x<ind)return quick(st,ind-1,A,x);
else return quick(ind+1,dr,A,x);
}
int main()
{
int n,x;
int *A= new int[N];
fin>>n>>x;
for(int i=1;i<=n;i++)fin>>A[i];
fout<<quick(1,n,A,x);
return 0;
}