Pagini recente » Cod sursa (job #434333) | Cod sursa (job #996534) | Cod sursa (job #1316348) | Cod sursa (job #63558) | Cod sursa (job #2172360)
#include <bits/stdc++.h>
using namespace std;
int v[500005], n, p;
void quick(int st, int dr)
{
int l = st, r = dr, x, piv = st+rand()%(dr-st+1);
swap(v[l], v[piv]);
x = v[l];
while(l < r){
while(l < r && v[r] >= x)
--r;
v[l] = v[r];
while(l < r && v[l] <= x)
++l;
v[r] = v[l];
}
v[l] = x;
if(l-1 > st && l-1 >= p)
quick(st, l-1);
if(l+1 < dr && l+1 <= p)
quick(l+1, dr);
}
int main()
{
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
fin >> n >> p;
for (int i = 1; i <= n; ++i)
fin >> v[i];
srand(time(NULL));
quick(1, n);
fout << v[p] << "\n";
return 0;
}