Pagini recente » Cod sursa (job #454680) | Cod sursa (job #1741570) | Cod sursa (job #1545475) | Cod sursa (job #155474) | Cod sursa (job #1553573)
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
int c[30000001];
ifstream f("sdo.in");
ofstream g("sdo.out");
int partitie(int st, int dr){
int pindex,i,y;
y=st+(rand()%(dr-st+1));
swap(c[y],c[dr]);
pindex=st;
for(i=st;i<=dr-1;i++){
if(c[i]<=c[dr]){
swap(c[i],c[pindex]);
pindex++;
}
}
swap(c[dr], c[pindex]);
return pindex;
}
int quickSelect(int st, int dr, int k){
int index;
index=partitie(st,dr);
if(k==index) return index;
else if(k<index) return quickSelect(st, index-1, k);
else return quickSelect(index+1, dr, k);
}
int main() {
int i,n,k;
f>>n>>k;
for(i=1;i<=n;i++) f>>c[i];
g<<c[quickSelect(1, n, k)];
f.close();
g.close();
return 0;
}