Pagini recente » Cod sursa (job #2673089) | Istoria paginii runda/moisil2012 | Cod sursa (job #403882) | Cod sursa (job #1799004) | Cod sursa (job #2670546)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int a[3000005], n, k;
void Citire()
{
fin >> n >> k;
for(int i = 1; i <= n; i++) fin >> a[i];
}
int Pivot(int st, int dr)
{
int i, j, piv;
j = (st + dr) / 2;
swap(a[j], a[st]);
piv = a[st];
j = st;
for(i = st + 1; i <= dr; i++)
if(a[i] <= piv)
{
j++;
swap(a[i], a[j]);
}
swap(a[st], a[j]);
return j;
}
int Cauta(int st, int dr)
{
int p = Pivot(st, dr);
if(p == k) return a[p];
if(p < k) return Cauta(p + 1, dr);
return Cauta(st, p - 1);
}
int main()
{
Citire();
fout << Cauta(1, n);
return 0;
}