Pagini recente » Cod sursa (job #617720) | Cod sursa (job #1186570) | Cod sursa (job #2530020) | Cod sursa (job #1732359) | Cod sursa (job #1576138)
#include <fstream>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,k,v[3000005];
void Citire()
{
int i;
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>v[i];
fin.close();
}
int Pivot(int st,int dr)
{
int piv,x=st;
piv=v[st];
st++;
while(st<=dr)
{
if(v[st]<=piv) st++;
if(piv<v[dr]) dr--;
if(v[st]>piv&&piv>=v[dr]&&st<dr)
{
swap(v[st],v[dr]);
st++;
dr--;
}
}
swap(v[x],v[st-1]);
return st-1;
}
int Elem(int st,int dr)
{
int poz;
if(st==dr) return v[st];
poz=Pivot(st,dr);
if(poz==k) return v[poz];
if(poz>k) return Elem(st,poz-1);
return Elem(poz+1,dr);
}
int main()
{
int p;
Citire();
p=Elem(1,n);
fout<<p<<"\n";
fout.close();
return 0;
}