Pagini recente » Cod sursa (job #1213754) | Cod sursa (job #358734) | Cod sursa (job #1222210) | Cod sursa (job #1611292) | Cod sursa (job #1806750)
#include <fstream>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
void schimb(int &a,int &b){
int c=a;
a=b;
b=c;
}
int partr(int v[], 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 v[], int st, int dr,int &k){
if (st >= dr) return;
int p=partr(v,st,dr);
if (k<p)
qsort(v,st,p-1,k);
if (k>p)
qsort(v,p+1,dr,k);
}
int main()
{
int v[2000000],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(v,1,n,k);
g << v[k];
return 0;
}