Cod sursa(job #1868316)

Utilizator M.AnaAna Marginean M.Ana Data 4 februarie 2017 20:25:01
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("sdo.in");
ofstream out("sdo.out");
int n, k;
int v[3000000];

int partition(int v[], int left, int right) {
	int i = left, j = right;

	int random = rand() % right + left;

	int pivot = v[random];

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

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

	return i;
}

void quicksort(int v[], int left, int right) {
	int index = partition(v, left, right);

	if (left < index - 1)
		quicksort(v, left, index - 1);
	if (right > index)
		quicksort(v, index, right);

}
int main()
{

	in >> n >> k;

	for (int i = 0; i < n; i++) {
		in >> v[i];
	}

	quicksort(v, 0, n - 1);

	out << v[k - 1];
}