Pagini recente » Cod sursa (job #2187733) | Cod sursa (job #1885186) | Cod sursa (job #2877920) | Cod sursa (job #1937013) | Cod sursa (job #2861700)
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<list>
#include<iterator>
using namespace std;
FILE*in=fopen("sdo.in","r");
FILE*out=fopen("sdo.out","w");
const int NMAX=3000007;
int n,k,i,a,r;
list<int> v;
list<int>::iterator it;
list<list<int>::iterator> q;
list<list<int>::iterator>::iterator itt;
void sol(list<int> &ve,int p)
{
q.clear();
int ra=rand()%ve.size(),pas=0,el;
for(it=ve.begin();it!=ve.end();it++)
{
if(pas==ra)
{
el=*it;
break;
}
pas++;
}
int ct=0;
for(it=ve.begin();it!=ve.end();it++)
{
if(*it<el)
{
ct++;
}
}
if(ct==p-1)
{
r=el;
}
else if(ct>p-1)
{
for(it=ve.begin();it!=ve.end();it++)
{
if(*it>=el)
{
q.push_back(it);
}
}
for(itt=q.begin();itt!=q.end();itt++)
{
ve.erase(*itt);
}
sol(ve,p);
}
else
{
for(it=ve.begin();it!=ve.end();it++)
{
if(*it<el)
{
q.push_back(it);
}
}
for(itt=q.begin();itt!=q.end();itt++)
{
ve.erase(*itt);
}
sol(ve,p-1-ct);
}
}
int main()
{
fscanf(in,"%d%d",&n,&k);
for(i=1;i<=n;i++)
{
fscanf(in,"%d",&a);
v.push_back(a);
}
sol(v,k);
fprintf(out,"%d",r);
}