Pagini recente » Cod sursa (job #2872242) | Cod sursa (job #1126161)
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int sodPartition(int *elements, int left, int right) {
int verif = 1;
while (left < right) {
if (elements[left] > elements[right]) {
swap(elements[left], elements[right]);
verif = -verif;
}
(verif == 1) ? ++left : --right;
}
return left;
}
int sod (int* elements, int K, int N) {
int p = sodPartition(elements, 0, N-1);
// fout << p << " " << elements[p] << " " << N << " " << K << "\n";
if (p < K) return sod(&elements[p+1], K - p, N - p - 1);
else if (p > K) return sod(&elements[0], K, p - 1);
else return elements[p];
}
int main () {
int N, K;
vector<int> elements;
fin >> N >> K;
int t;
for (int i = 0; i < N; ++ i) {
fin >> t;
elements.push_back(t);
}
fout << sod(&elements[0], K-1, N);
return 0;
}