Pagini recente » Cod sursa (job #3124852) | Atasamentele paginii Clasament v_vs_p | Cod sursa (job #1357323) | Cod sursa (job #1890861) | Cod sursa (job #3303731)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int n, k, a[3000005], ans = 0;
int poz (int st, int dr) {
if (st < dr) {
int i = st, j = dr;
int di = 0, dj = -1;
int p = rand() % (dr - st + 1) + st;
swap (a[p], a[st]);
while (i < j) {
if (a[i] > a[j]) {
swap (a[i], a[j]);
swap (di, dj);
di = -di; dj = -dj;
}
i += di; j += dj;
}
return i;
}
}
void sorteaza (int st, int dr) {
if (st == dr) {
ans = a[k];
return;
}
if (st < dr) {
int p = poz (st, dr);
if (p == k) {
ans = a[k]; return;
}
else {
if (p < k)
sorteaza (p+1, dr);
else sorteaza (st, p-1);
}
}
}
int main()
{
f >> n >> k;
for (int i=1; i<=n; ++i)
f >> a[i];
sorteaza (1, n);
g << ans;
return 0;
}