Pagini recente » Cod sursa (job #2946458) | Cod sursa (job #3031955) | Cod sursa (job #3266994) | Cod sursa (job #3135365) | Cod sursa (job #1126201)
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
#define MAXN 3000010
int N, K;
int elements[MAXN];
int sodPartition(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 K, int left, int right) {
int p = sodPartition(left, right);
//fout << p << " " << elements[p] << " " << N << " " << K << "\n";
if (p < K) return sod(K, p + 1, right);
else if (p > K) return sod(K, left, p - 1);
else return elements[p];
}
int main () {
fin >> N >> K;
for (int i = 0; i < N; ++ i) {
fin >> elements[i];
}
fout << sod(K-1, 0, N-1) << "\n";
return 0;
}