Pagini recente » Cod sursa (job #1055394) | Cod sursa (job #1611167) | Cod sursa (job #2566920) | Cod sursa (job #965978) | Cod sursa (job #710639)
Cod sursa(job #710639)
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int n;
int a[80000];
// Searches the k'th element in the vector a[]
int search(int k,int a[80000],int n)
{
int i;
int lower=0,bigger=0;
int pivot=a[rand()%n];
int low[80000];
int big[80000];
// low[] - the elements lower than pivot
// big[] - the elements bigger than pivot
for (i=0; i<n; i++)
if (a[i]<pivot) low[lower++]=a[i];
else if (a[i]>pivot) big[bigger++]=a[i];
// determine in which vector the solution is
if (k<=lower) { return search(k,low,lower); }
else if (k<=n-bigger) return pivot;
else return search(k-n+bigger,big,bigger);
}
int main()
{
int k,i;
ifstream f("sdo.in");
f>>n>>k;
for (i=0; i<n; i++)
f>>a[i];
f.close();
int k_number=search(k,a,n);
ofstream g("sdo.out");
g<<k_number;
g.close();
return 0;
}