Pagini recente » Cod sursa (job #1945044) | Cod sursa (job #2746534) | Cod sursa (job #1222801) | Cod sursa (job #1090060) | Cod sursa (job #1534926)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
//FILE* si=fopen("siruri2.in","r");
ifstream si("sdo.in");
ofstream so("sdo.out");
const int NMAX=3000005;
int v[NMAX];
inline void schimb(int &a,int &b)
{
int aux=a;
a=b;
b=aux;
}
int srt(int st,int fin)
{
int piv=v[(st+fin)>>1];
int i=st-1,j=fin+1;
while(1)
{
++i;
while(v[i]<piv)++i;
--j;
while(v[j]>piv)--j;
if(i<j)schimb(v[i],v[j]);
else return j;
}
return 0;
}
void rez(int st,int sf,int k)
{
if(st==sf)
return;
int s=srt(st,sf);
int t=s-st+1;
if(t>=k)
rez(st,s,k);
else
rez(s+1,sf,k-t);
}
int main()
{
int n,k;
si>>n>>k;
int i;
for(i=1;i<=n;++i)
si>>v[i];
rez(1,n,k);
so<<v[k];
so.close();
return 0;
}