Cod sursa(job #2931192)

Utilizator Vasile_AndreiVasile Andrei Calin Vasile_Andrei Data 30 octombrie 2022 17:16:50
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

using namespace std;

ifstream fin("sdo.in");
ofstream fout("sdo.out");

static void order_statistic(int x[], int l, int r, int K) {
	if (l >= r) return;

	int p = l + rand() % (r - l + 1);
	swap(x[l], x[p]);

	int i = l, j = r, d = 1;
	while (i < j) {
		if (x[i] > x[j]) {
			swap(x[i], x[j]);
			d = 1 - d;
		}

		i += d;
		j -= 1 - d;
	}

	if (i == K) return;
	else if (i > K)
		order_statistic(x, l, i - 1, K);
	else  order_statistic(x, l + 1, r, K);
}

constexpr int MAX_N = 3000005;
int N, K, i, x[MAX_N];

int main() {
	fin >> N >> K;
	for (i = 1; i <= N; i++)
		fin >> x[i];

	order_statistic(x, 1, N, K);
	fout << x[K];

	fin.close();
	fout.close();
	return 0;
}