Pagini recente » Cod sursa (job #1209710) | Cod sursa (job #830854) | Cod sursa (job #2228364) | Cod sursa (job #664221) | Cod sursa (job #1020036)
#include<iostream>
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
int caut(const vector<unsigned> &m, unsigned st, unsigned dr, unsigned val) {
if (dr == st + 1) {
return dr;
}
int mid = (st + dr)/ 2;
if (val < m[mid]) {
return caut(m, st, mid, val);
}
return caut(m, mid, dr, val);
}
int main()
{
vector<unsigned> m;
ifstream ifs;
ofstream ofs;
ifs.open("sdo.in");
unsigned size, k;
ifs >> size;
ifs >> k;
m = vector<unsigned>(k);
unsigned i, elem;
for (i = 0; i < k; ++i) {
ifs >> elem;
m[i]=(elem);
}
std::sort(m.begin(), m.end());
for (; i < size; ++i) {
ifs >> elem;
if (elem > m[k - 1]) {
continue;
}
m.pop_back();
//adaugare
if (elem<m.front()) {
m.insert(m.begin(), elem);
continue;
}
if (elem > m.back()){
m.push_back(elem);
continue;
}
int pos;
pos = caut(m, 0, k - 2, elem);
m.insert(m.begin()+pos, elem);
}
ifs.close();
ofs.open("sdo.out");
ofs << m[k-1];
ofs.close();
}