Pagini recente » Cod sursa (job #1749629) | Cod sursa (job #1672603) | Cod sursa (job #2398527) | Cod sursa (job #792879) | Cod sursa (job #1275332)
#include <iostream>
#include <fstream>
#include <signal.h>
#include <limits.h>
using namespace std;
int part(int *v, int l, int r) {
int p = (l+r) / 2;
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 *v, int l, int r, int k) {
if (l == r || l > r) return;
int p = part(v,l,r);
if (k > p) pivot(v,p+1,r,k);
if (k <= p) pivot(v,l,p-1,k);
}
int main()
{
int n,k,i;
ifstream f("sdo.in");
f>>n;
f>>k;
int v[n+1];
i = 0;
while(f>>v[i]) i++;
f.close();
pivot(v,0,n-1,k);
ofstream g("sdo.out");
g<<v[k-1];
g.close();
return 0;
}