Pagini recente » Cod sursa (job #1530387) | Cod sursa (job #1083028) | Cod sursa (job #1377854) | Cod sursa (job #2406477) | Cod sursa (job #1553022)
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
int a[3000001],n,k;
ifstream f("sdo.in");
ofstream g("sdo.out");
int partitie(int l, int r){
int pivot,i,j;
srand(time(NULL));
swap(a[l+rand()%(r-l+1)],a[(l+r)/2]);
pivot=a[(l+r)/2];
i=l-1;
j=r+1;
while(true){
do{
j--;
}while(a[j]>pivot);
do{
i++;
}while(a[i]<pivot);
if(i<j) swap(a[i],a[j]);
else return j;
}
}
int nth(int st, int dr, int k){
int index;
index=partitie(st,dr);
if(k==index) return index;
else if(k<index) nth(st,index,k);
else nth(index+1,dr,k);
}
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++) f>>a[i];
g<<a[nth(1,n,k)];
return 0;
}