Pagini recente » Cod sursa (job #362390) | Cod sursa (job #1541933) | Cod sursa (job #2365739) | Cod sursa (job #1410558) | Cod sursa (job #2083250)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int x[3000003],n,i,k;
int part(int p, int u)
{ int index;
index=rand() % (u-p+1) + p;
swap(x[u], x[index]);
int piv = x[u];
while(1){
while(x[p] < piv) p++;
while(x[u] > piv) u--;
if(p >= u)
return p ;
swap(x[p++], x[u--]);
}
}
void quick(int p,int u)
{int t;
if (p<u) {t=part(p,u);
if(t!=k){
if(t>k)
quick(p,t-1);
else quick(t,u);}} // un quick sort , care a suferit o mica modificare
} //sortam numar partile de care o sa avem nevoie
int main()
{srand(time(0));
f>>n>>k;
for(int i=1;i<=n;i++)
{
f>>x[i];
}
quick(1,n);
g<<x[k];
}