Pagini recente » Cod sursa (job #1565065) | Cod sursa (job #75504) | Cod sursa (job #1122413) | Cod sursa (job #989760) | Cod sursa (job #2467138)
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,k,i,v[3000005];
int poz(int st, int dr)
{
if (st < dr)
{
int i = 0; int j = -1;
int stst = st; int drdr = dr;
int x = st+rand()%(dr-st+1);
swap(v[st], v[x]);
while (stst != drdr)
{
if (v[stst] > v[drdr])
{
swap(v[stst], v[drdr]);
int aux = i;
i = -j;
j = -aux;
}
stst += i;
drdr += j;
}
return stst;
}
}
int solve(int st, int dr, int val)
{
if (st == dr)
return v[st];
int p = poz(st, dr);
if (p == k)
return v[k];
if (p < k)
return solve(p+1, dr, val);
else
return solve(st, p-1, val);
}
int main()
{
fin >> n >> k;
for (i=1; i<=n; i++)
fin >> v[i];
srand(time(0));
fout << solve(1, n, k);
return 0;
}