Pagini recente » Diferente pentru problema/arcas intre reviziile 45 si 10 | Cod sursa (job #2035364) | Cod sursa (job #1803042) | Diferente pentru template/algoritmiada-2009/header intre reviziile 13 si 14 | Cod sursa (job #1842653)
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int n,k,i,x[3000010];
void go(int,int);
int main()
{
f>>n>>k;
for(i=1;i<=n;i++)
f>>x[i];
go(1,n);
g<<x[k];
return 0;
}
void go(int lo,int hi)
{
int st=lo,dr=hi,mi;
if(lo==hi)return;
do
{
mi=x[(lo+hi)/2];
while(x[st]<mi)st++;
while(x[dr]>mi)dr--;
if(st<dr){swap(x[st],x[dr]);st++;dr--;}
}
while(st<=dr);
if(k<=dr)go(lo,dr);
else go(st,hi);
}