Pagini recente » Cod sursa (job #3159620) | Cod sursa (job #1796272) | Cod sursa (job #767147) | Cod sursa (job #543080) | Cod sursa (job #1009155)
#include<fstream>
int n,v[3000003],k;
int quicksort(int x,int y)
{
int cl=x,cr=y,piv=rand()%(y-x)+x,sw;
while(cr!=cl)
{
while(v[cl]<=v[piv]&&cl!=piv)
cl++;
while(v[cr]>=v[piv]&&cr!=piv)
cr--;
if(cr!=cl)
{
sw=v[cr];
v[cr]=v[cl];
v[cl]=sw;
if(cl==piv)
piv=cr;
else
if(cr==piv)
piv=cl;
}
}
if(piv==k)
return piv;
if(x<piv-1&&k<piv)
return quicksort(x,piv-1);
if(y>piv+1&&k>piv)
return quicksort(piv+1,y);
}
int main(void)
{
int i;
ifstream f("sdo.in");
ofstream g("sdo.out");
f>>n>>k;
for(i=1;i<=n;i++)
f>>v[i];
g<<quicksort(1,n);
}