Pagini recente » Cod sursa (job #320505) | Cod sursa (job #3162360) | Cod sursa (job #3203585) | Cod sursa (job #871964) | Cod sursa (job #545212)
Cod sursa(job #545212)
/*
* File: main.c
* Author: slycer
*
* Created on March 2, 2011, 11:20 PM
*/
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
int data[3000001];
int swap( int i, int j){
int aux = data[i];
data[i] = data[j];
data[j] = aux;
}
int main(int argc, char** argv) {
FILE * in = fopen("sdo.in","r");
FILE * out = fopen("sdo.out","w");
int n,k;
fscanf(in,"%d%d",&n,&k);
int i;
for ( i=1; i<=n; i++){
fscanf(in,"%d",&data[i]);
// printf("%d ",data[i]);
}
int left = 1;
int right = n;
while (left <= right) {
int pivot = left + random() % (right - left + 1);
swap(pivot, right);
int j = left;
for (i = left; i < right; i++) {
if (data[i] <= data[right]) {
swap(i, j);
j++;
}
}
swap(j, right);
if ( j == k ){
fprintf(out,"%d",data[k]);
break;
}
if ( j<k){
left = j+1;
} else{
right = j-1;
}
}
fclose( in );
fclose ( out );
return (EXIT_SUCCESS);
}