Pagini recente » Cod sursa (job #580548) | Cod sursa (job #3126212) | Cod sursa (job #2910791) | Cod sursa (job #2948237) | Cod sursa (job #1477172)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n, k;
vector <int> rez;
void add(int pozitie, int numar)
{
for (int i = k; i > pozitie; i--)
rez[i] = rez[i - 1];
rez[pozitie] = numar;
}
int cbin(int x)
{
int i, nr;
for (nr = 1; nr < k; nr <<= 1);
for (i = 0; nr; nr >>= 1)
if (i + nr < k && rez[i + nr] <= x)
i += nr;
return i;
}
int main()
{
fin >> n >> k;
rez.resize(k + 4);
for (int i = 1; i <= k; i++)
fin >> rez[i];
sort(rez.begin() + 1, rez.begin() + k + 1);
for (int i = k, numar; i < n; i++)
{
fin >> numar;
if (numar < rez[k]) add(cbin(numar) + 1, numar);
}
fout << rez[k];
}