Cod sursa(job #2808187)

Utilizator alexandraioanIoan Alexandra alexandraioan Data 24 noiembrie 2021 18:16:16
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;
ifstream cin("statisticiordine.in");
ofstream cout("statisticiordine.out");
unsigned int v[4000001], n, k;
int partitionare(unsigned int v[], int l, int h) {
	int pivot = v[l];
	int i = l;
	int j = h + 1;
	while (i < j) {
		do {
			i++;
		} while (v[i] <= pivot);
		do {
			j--;
		} while (v[j] > pivot);
		if (i < j) {
			swap(v[i], v[j]);
		}
	}
	swap(v[l], v[j]);
	return j;
}

void quickSort(unsigned int v[], int l, int h, int k) {
	if (l < h) {
		int pivot = partitionare(v, l, h);
		if (k <= pivot - l + 1)
			quickSort(v, l, pivot - 1, k);
		else
			quickSort(v, pivot + 1, h, k - (pivot - l + 1));
	}

}

int main()
{
	cin >> n >> k;
	for (int i = 0; i < n; ++i) {
		cin >> v[i];
	}
	quickSort(v, 0, n - 1, k);
	cout << v[k - 1];


	return 0;
}