Pagini recente » Cod sursa (job #346628) | Cod sursa (job #3264192) | Cod sursa (job #2596902) | Cod sursa (job #1978184) | Cod sursa (job #1533209)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int NMAX = 3000002;
int k; int n;
int v[NMAX];
int quick(int st, int dr) {
if(st >= dr)
return v[st];
int left = st; int right = dr;
int p = dr ;//st + (rand() % (dr - st + 1));
//swap(v[p], v[dr]);
p = dr;
while(st <= dr) {
while(st <= dr && v[dr] >= v[p]) dr--;
while(st <= dr && v[st] <= v[p]) st++;
if(st <= dr)
swap(v[st], v[dr]);
}
swap(v[st], v[p]);
if(k == st)
return v[st];
if(left < st - 1 && k <= st - 1)
return quick(left, st - 1);
if(right > st + 1 && k >= st + 1)
return quick(st + 1, right);
}
int main() {
srand(time(NULL));
fin >> n >> k;
for(int i = 1 ; i <= n ; ++i)
fin >> v[i];
fout << quick(1, n);
//for(int i = 1; i <= n; ++i)
// fout << v[i] << " ";
return 0;
}