Pagini recente » Cod sursa (job #1968792) | Cod sursa (job #472435) | Cod sursa (job #2535534) | Cod sursa (job #3258790) | Cod sursa (job #2295933)
#include <fstream>
#include <cstdlib>
#include <algorithm>
#define nmax 3000001
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int a[nmax],n,k;
int AlegRandPivot(int st,int dr)
{ int random=st+rand()%(dr-st);
return random;
}
int partitie(int st, int dr)
{ int pivot=a[dr];
int i,j;
i=st-1;
for(j=st; j<dr; j++)
if(a[j]<pivot) {i++; swap(a[i],a[j]);}
swap(a[i+1],a[dr]);
return i+1;
}
int fc(int st,int dr)
{ if(st>=dr) return st;
int pivot=AlegRandPivot(st,dr);
swap(a[pivot],a[dr]);
int poz=partitie(st,dr);
if(poz>k) return fc(st,poz-1);
if(poz<k) return fc(poz+1,dr);
return poz;
}
int main()
{ fin>>n>>k;
int i;
for(i=1; i<=n; i++) fin>>a[i];
int pozitie=fc(1,n);
fout<<a[pozitie];
return 0;
}