Pagini recente » Cod sursa (job #349903) | Cod sursa (job #1734338) | Cod sursa (job #2510638) | Cod sursa (job #70626) | Cod sursa (job #2669947)
#include <stdio.h>
#include <stdlib.h>
int v[3000000];
int quickselect(int pmin, int pmax, int poz){
int b, e, aux, p;
while(pmin < pmax){
p = v[(pmin + pmax) / 2];
b = pmin;
e = pmax;
while(v[b] < p){
b++;
}
while(v[e] > p){
e--;
}
while(b < e){
aux = v[b];
v[b] = v[e];
v[e] = aux;
do{
b++;
}while(v[b] < p);
do{
e--;
}while(v[e] > p);
}
if(poz <= e){
pmax = e;
}else{
pmin = e + 1;
}
}
return v[poz];
}
int main()
{
FILE *fin, *fout;
int n, k, i;
fin = fopen("sdo.in", "r");
fscanf(fin, "%d%d", &n, &k);
for(i = 0; i < n; i++){
fscanf(fin, "%d", &v[i]);
}
fclose(fin);
fout = fopen("sdo.out", "w");
fprintf(fout, "%d", quickselect(0, n - 1, k - 1));
fclose(fout);
return 0;
}