Pagini recente » Cod sursa (job #2886413) | Cod sursa (job #1099009) | Cod sursa (job #1891623) | Cod sursa (job #2861775) | Cod sursa (job #2542445)
#include <fstream>
#include <random>
#include <time.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,k,i,j,v[500001];
int poz(int st, int dr){
int x=st+rand()%(dr-st+1);
swap(v[x],v[st]);
int dst=0;
int ddr=-1;
int aux;
while(st<dr){
if(v[st]>v[dr]){
swap(v[st],v[dr]);
aux=ddr;
ddr=-dst;
dst=-aux;
}
st+=dst;
dr+=ddr;
}
return st;
}
int solve(int st, int dr){
if(st==dr)
return v[st];
int p=poz(st,dr);
if(p==k)
return v[k];
if(p<k)
solve(p+1,dr);
else
solve(st,p-1);
}
int main(){
srand(time(0));
fin>>n>>k;
for(i=1;i<=n;i++){
fin>>v[i];
}
fout<<solve(1,n);
return 0;
}