Pagini recente » Cod sursa (job #2952247) | Cod sursa (job #2154554) | Cod sursa (job #2926512) | Cod sursa (job #2920045) | Cod sursa (job #2669898)
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
using namespace std;
#define NMAX 3000000
int v[NMAX + 5];
int readInt(FILE* fin){
char ch;
int nr = 0;
ch = fgetc( fin );
while (!(ch >= '0' && ch <= '9'))
ch = fgetc( fin );
do{
nr = nr * 10 + ch - '0';
ch = fgetc( fin );
}while (ch >= '0' && ch <= '9');
return nr;
}
void nth(int begin, int end,int ind){
int pivot = v[(begin + end) / 2];
int b = begin, e = end;
while (v[b] < pivot)
b++;
while (v[e] > pivot)
e--;
while(b < e){
swap(v[b] , v[e]);
do
b++;
while(v[b] < pivot);
do
e--;
while(v[e] > pivot);
}
if (begin < e && ind <= e)
nth(begin, e,ind);
if (e + 1 < end)
nth(e + 1, end, ind);
}
int main(){
FILE *fin,*fout;
fin = fopen("sdo.in","r");
fout = fopen("sdo.out","w ");
int n, k, i;
fscanf(fin ,"%d%d", &n ,&k);
for(i = 0; i < n; i++){
v[i] = readInt(fin);
printf("%d\n",v[i]);
}
nth(0,n - 1, --k);
fprintf( fout,"%d" ,v[k]);
return 0;
}