Pagini recente » Cod sursa (job #819812) | Cod sursa (job #2950162) | Cod sursa (job #1030081) | Cod sursa (job #2701262) | Cod sursa (job #2909830)
#include <fstream>
#include <vector>
std::ifstream cin("sdo.in");
std::ofstream cout("sdo.out");
int select(std::vector<int> &v, int stat) {
if(v.size() == 1) {
return v[0];
}
int piv = v[rand() % v.size()];
std::vector<int> left, right;
for(int x : v) {
if(x < piv) { left.push_back(x); }
else { right.push_back(x); }
}
v.clear();
if(left.size() == stat) {
return piv;
}
if(left.size() > stat) {
return select(left, stat);
}
return select(right, stat - left.size());
}
int main() {
int n, k; cin >> n >> k;
std::vector<int> v(n);
for(int i = 0; i < n; i++) {
cin >> v[i];
}
cout << select(v, k - 1);
return 0;
}