Pagini recente » Cod sursa (job #2503645) | Cod sursa (job #1085609) | Cod sursa (job #1053176) | Cod sursa (job #2006794) | Cod sursa (job #1732512)
#include <iostream>
#include <fstream>
#include <random>
#include <stdlib.h>
#include <time.h>
using namespace std;
#define NMAX 3000010
long n,i;
long v[NMAX];
ifstream f("sdo.in");
ofstream g("sdo.out");
long partitie(long *v,long ii,long is){
long i,j;
i=ii-1;
j=is+1;
long pivot=v[ii];
while(true){
do{
i++;
}while(v[i]<pivot);
do{
j--;
}while(v[j]>pivot);
if(i<j)
swap(v[i],v[j]);
else return j;
}
}
long partitieAleatoare(long *v,long ii, int is){
srand(time(0));
long nr = rand() % (is-ii+1);
nr+=ii;
swap(v[nr],v[ii]);
return partitie(v,ii,is);
}
long iStatistics(long *v,long ii,long is,long i){
if(ii == is)
return v[ii];
else{
long q = partitieAleatoare(v,ii,is);
if(i<=q) return iStatistics(v,ii,q,i);
else return iStatistics(v,q+1,is,i);
}
}
int main()
{
f >> n;
f >> i;
for(long k=0;k<n;k++){
f >> v[k];
}
g << (long)iStatistics(v,0,n-1,i-1);
return 0;
}