Pagini recente » Cod sursa (job #2497226) | Cod sursa (job #2600765) | Cod sursa (job #1197580) | Cod sursa (job #2109053) | Cod sursa (job #2609892)
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int k, n;
int quickselect(int v[],int len, int k)
{
long int pivot = len - 1;
int lo = 0, eq = 0, hi = 0;
int LO[len];
int EQ[len];
int HI[len];
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)
{
return quickselect(LO, lo, k);
}
else if (k <= lo + eq)
return EQ[0];
else
{
return quickselect(HI, hi, k - (lo + eq));
}
}
int main()
{
int *v;
f >> n >> k;
v = new int[n];
for(int i = 0; i < n; i++)
f >> v[i];
g << quickselect(v, n, k) << '\n';
delete[] v;
}