Pagini recente » Cod sursa (job #605255) | Cod sursa (job #1515889) | Cod sursa (job #619739) | Cod sursa (job #2238974) | Cod sursa (job #1276096)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int v[3000000];
int part(int l, int r) {
int p = rand()%(r-l) + l;
int i,x,pos,value;
value = v[p];
x = v[p];
v[p] = v[r];
v[r] = x;
pos = l;
for (i=l;i<r;i++) {
if (v[i] < value) {
x = v[i];
v[i] = v[pos];
v[pos] = x;
pos++;
}
}
x = v[pos];
v[pos] = v[r];
v[r] = x;
return pos;
}
void pivot (int l, int r, int k) {
if (l == r || l > r) return;
int p = part(l,r);
if (k > p) pivot(p+1,r,k);
if (k <= p) pivot(l,p-1,k);
}
int main()
{
int n,k,i;
ifstream f("sdo.in");
f>>n;
f>>k;
for (i=0;i<n;i++) f>>v[i];
f.close();
pivot(0,n-1,k);
ofstream g("sdo.out");
g<<v[k-1];
g.close();
return 0;
}