Cod sursa(job #1891472)

Utilizator Razvanel6991Razvan Lazar Razvanel6991 Data 24 februarie 2017 01:47:15
Problema Statistici de ordine Scor 60
Compilator c Status done
Runda Arhiva educationala Marime 1.02 kb
#include <stdio.h>
#include <stdlib.h>

void quickSort(int *v, int lower, int upper){
	int i, j, pivot, aux;

	i = lower;
	j = upper;

	//pivot = v[ (lower + upper ) / 2];
	pivot = v[ lower + (upper  - lower) / 2];

	while(i <= j){
		while(v[i] < pivot) i++;
		while(v[j] > pivot) j--;

		if(i <= j){
			/* change */
			aux = v[i];
			v[i] = v[j];
			v[j] = aux;
			i++;
			j--;
		}
	}

	if(lower < j){
		quickSort(v, lower, j);
	}
	if(upper > i){
		quickSort(v, i, upper);
	}
}


void printArray(int *v, int N){
	for(int i = 0; i < N; i++){
		printf("%d ", v[i]);
	}
	printf("\n");
}

void readArray(int *v, int N, FILE *in){
	for(int i = 0; i < N; i++){
		fscanf(in, "%d", v + i);
	}
}

int main(){
	FILE *in, *out;
	int N, k, *v;

	in = fopen("sdo.in", "r");
	out = fopen("sdo.out", "w");



	fscanf(in, "%d", &N);
	fscanf(in, "%d", &k);

	v = malloc(N * sizeof(int));
	readArray(v, N, in);
	//printArray(v, N);


	quickSort(v, 0, N - 1);
	//printArray(v, N);


	fprintf(out, "%d", v[k - 1]);

	free(v);
	fclose(in);
	fclose(out);

	return 0;
}