Pagini recente » Cod sursa (job #956276) | Cod sursa (job #358815) | Cod sursa (job #109602) | Cod sursa (job #540896) | Cod sursa (job #2611771)
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int k, n, LO[3000001], EQ[3000001], HI[3000001];
int quickselect(int v[], int len, int k)
{
long int pivot = len - 1;
int lo = 0, eq = 0, hi = 0;
for (int i = 0; i < len; i++)
{
if (v[i] < v[pivot])
{
LO[lo] = v[i];
lo++;
}
else if(v[i] == v[pivot])
{
EQ[eq] = v[i];
eq++;
}
else
{
HI[hi] = v[i];
hi++;
}
}
if (k <= lo)
quickselect(LO, lo, k);
else if (k <= lo + eq)
return EQ[0];
else
quickselect(HI, hi, k - (lo + eq));
}
int main()
{
f >> n >> k;
for(int i = 0; i < n; i++)
f >> EQ[i];
g << quickselect(EQ, n, k) << '\n';
}