Pagini recente » Cod sursa (job #431116) | Cod sursa (job #2904058) | Cod sursa (job #1502349) | Cod sursa (job #1664200) | Cod sursa (job #788986)
Cod sursa(job #788986)
#include <fstream>
using namespace std;
int A[3000010];
int n;
int quickselect(int k)
{
int bal, jobb, i, j, mid, t;
bal = 1; jobb = n;
while (bal < jobb)
{
i = bal;
j = jobb;
mid = A[bal + (jobb - bal) / 2];
while (i <= j)
{
while (A[i] < mid) i++;
while (mid < A[j]) j--;
if (i <= j)
{
t = A[i]; A[i] = A[j]; A[j] = t;
i++; j--;
}
}
if (k == i-1) bal = jobb;
else if (k >= i) bal = i;
else jobb = j;
}
return A[k];
}
int main()
{
int k, i;
ifstream f("sdo.in");
f >> n >> k;
for (i = 1; i<=n; i++)
f >> A[i];
f.close();
ofstream g("sdo.out");
g << quickselect(k) << '\n';
g.close();
return 0;
}