Pagini recente » Monitorul de evaluare | Cod sursa (job #502798) | Cod sursa (job #1631319) | Monitorul de evaluare | Cod sursa (job #1773982)
#include<iostream>
#include<fstream>
using namespace std;
ifstream si("sdo.in");
ofstream so("sdo.out");
int v[3000005];
int sortare(int st,int dr)
{
int piv=v[(st+dr)>>1];
int i=st-1,j=dr+1,aux;
while(1)
{
i++;
while(piv>v[i])
++i;
j--;
while(piv<v[j])
--j;
if(i<j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else
return j;
}
}
int main()
{
int n,k;
si>>n>>k;
int i;
for(i=1;i<=n;++i)
si>>v[i];
int st=1,s,dr=n,t,r=k;
while(st<dr)
{
s=sortare(st,dr);
t=s-st+1;
if(t>=r)
{
dr=s;
}
else
{
st=s+1;
r-=t;
}
}
so<<v[k];
return 0;
}