Pagini recente » Cod sursa (job #1468025) | Cod sursa (job #284206) | Cod sursa (job #970738) | Cod sursa (job #408282) | Cod sursa (job #2337850)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3000005;
int v[MAXN];
int n;
int partit(int st, int dr){
int piv = v[(st + dr) / 2];
int l = st - 1, h = dr + 1;
while(1){
l++;
while(v[l] < piv)
l++;
h--;
while(v[h] > piv)
h--;
if(l < h)
swap(v[l], v[h]);
else
return h;
}
}
int main()
{
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int k;
fin >> n >> k;
for(int i = 1; i <= n; ++i)
fin >> v[i];
int st = 1, dr = n, dist = 0, stat = 0, dk = k;
while(st < dr){
stat = partit(st, dr);
dist = stat - st + 1;
if(dist > dk)
dr = stat;
else{
st = stat + 1;
dk -= dist;
}
}
fout << v[k];
return 0;
}