Pagini recente » Cod sursa (job #292428) | Cod sursa (job #2067860) | Cod sursa (job #1752134) | Cod sursa (job #2755392) | Cod sursa (job #2611614)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<int> v;
int partition(int l, int r){
int pivot, i = l;
pivot = rand() % (r-l+1) + l;
swap(v[r], v[pivot]);
while(l<r){
if(v[l]<=v[r])
swap(v[i++], v[l]);
l++;
}
swap(v[i], v[r]);
return i;
}
int quickSearch(int l, int r, int k){
if(l>r) return 0;
int m = partition(l, r);
if(m-l==k-1)
return v[m];
if(m-l>k-1)
return quickSearch(l, m-1, k);
return quickSearch(m+1, r, k-m+l-1);
}
int main() {
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n, k, x;
fin>>n>>k;
for(int i=0;i<n;i++){
fin>>x;
v.emplace_back(x);
}
fout<<quickSearch(0, n-1, k);
return 0;
}