Pagini recente » Cod sursa (job #2238052) | Cod sursa (job #884568) | Cod sursa (job #1732800) | Cod sursa (job #2771344) | Cod sursa (job #2861866)
#include <bits/stdc++.h>
using namespace std;
FILE* si=fopen("sdo.in","r");
FILE* so=fopen("sdo.out","w");
const int nmax=3000003;
int n,k, pst,pdr;
int v[nmax];
int cop[nmax];
int sdo(int st, int dr, int a)
{
if(st>=dr) return v[st];
pst=st,pdr=dr;
int comp=(rand()%(dr-st))+st;
for(int i=st; i<=dr; i++)
{
if(v[i]<v[comp]) cop[pst++]=v[i];
if(v[i]>v[comp]) cop[pdr--]=v[i];
}
cop[pst]=v[comp];
for(int i=st; i<=dr; i++) v[i]=cop[i];
if(pst<a-1) return sdo(pst+1,dr,a);
return sdo(st,pst,a);
}
int main()
{
srand(time(0));
fscanf(si,"%d%d",&n,&k);
for(int i=0; i<n; ++i) fscanf(si,"%d",&v[i]);
fprintf(so,"%d",sdo(0,n-1,k));
return 0;
}