Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #497534) | Cod sursa (job #1126403) | Cod sursa (job #3162590)
#include <fstream>
using namespace std;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
int v[3000005];
int kth_element(int st,int dr,int k)
{
if(st==dr)
return v[st];
int i,j,pivot,poz;
i=st;j=dr;
pivot=v[dr];
swap(v[st],v[dr]);
while(i<=j)
{
while(i<=j && v[i]<=v[st])
poz=i, i++;
while(i<=j && v[j]>v[st])
j--;
if(i<=j)
{
swap(v[i],v[j]);
poz=i;
i++; j--;
}
}
swap(v[st],v[poz]);
if(poz-st+1==k)
return v[poz];
else if(poz-st+1>k)
return kth_element(st,poz-1,k);
else
return kth_element(poz+1,dr,k-(poz-st+1));
}
int main()
{
int n,k,i;
cin>>n>>k;
for(i=1; i<=n; i++)
cin>>v[i];
int sol=kth_element(1,n,k);
cout<<sol;
return 0;
}