Pagini recente » Cod sursa (job #6072) | Cod sursa (job #1414345) | Cod sursa (job #2080225) | Cod sursa (job #6073) | Cod sursa (job #1212520)
#include <fstream>
#include <time.h>
#include <stdlib.h>
#define DIM 3000010
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[DIM];
int n, k, i, j, p, aux, x;
int poz(int st, int dr) {
x = st + rand()%(dr-st+1);
aux = v[st];
v[st] = v[x];
v[x] = aux;
i = 0;
j = -1;
while (st < dr) {
if (v[st] > v[dr]) {
aux = v[st];
v[st] = v[dr];
v[dr] = aux;
aux = i;
i = -j;
j = -aux;
}
st += i;
dr += j;
}
return st;
}
int cauta(int st, int dr, int k){
if (st == dr)
return v[st];
p = poz(st, dr);
if (p == k)
return v[k];
if (p>k)
return cauta(st, p-1, k);
else
return cauta(p+1, dr, k);
}
int main() {
fin>>n>>k;
for (i=1;i<=n;i++)
fin>>v[i];
srand(time(0));
fout<<cauta(1, n, k)<<"\n";
return 0;
}