Pagini recente » Cod sursa (job #1744133) | Cod sursa (job #437936) | Cod sursa (job #2947203) | Cod sursa (job #2177682) | Cod sursa (job #2613880)
#include <bits/stdc++.h>
std::ifstream fin("sdo.in");
std::ofstream fout("sdo.out");
int n, k;
int v[3000001], L[3000001], E[3000001], G[3000001];
int quickSelect(int v[], int n, int k)
{
int pivot = v[rand() % n];
int l = 0, e = 0, g = 0;
for(int i = 0; i < n; i ++)
if(v[i] < pivot)
L[l++] = v[i];
else if(v[i] == pivot)
E[e++] = v[i];
else
G[g++] = v[i];
if(k <= l)
return quickSelect(L, l, k);
else if(k <= l + e)
return E[0];
else
return quickSelect(G, g, k - l - e);
}
int main()
{
int i, val;
fin >> n >> k;
for(i = 0; i < n; i++)
{
fin >> v[i];
}
fout << quickSelect(v, n, k);
return 0;
}