Pagini recente » Cod sursa (job #1727814) | Cod sursa (job #2130136) | Cod sursa (job #2711945) | Cod sursa (job #113052) | Cod sursa (job #1806757)
#include <fstream>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int v[3000001];
void schimb(int &a,int &b){
int c=a;
a=b;
b=c;
}
int partr(int st, int dr){
int i,j,piv=v[dr];
for (i=j=st;i<dr;i++)
if (v[i] < piv){
schimb(v[i],v[j]);
j++;
}
schimb(v[j],v[dr]);
return j;
}
void qsort(int st, int dr,int &k){
if (st >= dr) return;
int p=partr(st,dr);
if (k<p)
qsort(st,p-1,k);
if (k>p)
qsort(p+1,dr,k);
}
int main()
{
int n,i,j,k;
f >> n >> k;
for (i=1;i<=n;i++)
f >> v[i];
for (i=n;i>=1;i--)
{
j=1+rand()%i;
schimb(v[i],v[j]);
}
qsort(1,n,k);
g << v[k];
return 0;
}