Cod sursa(job #982670)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 9 august 2013 17:44:23
Problema Statistici de ordine Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 30000001

long M[MAXSIZE];
int n, k, size;

void insert(int x)
{	
	int p = size + 1;

	while ((p >> 1) > 1 && M[p >> 1] > x)
	{
		M[p] = M[p >> 1];
		p >>= 1;
	}

	M[p] = x;
	if (size < k) ++size;
}

int main()
{
	int i; 
	long x;
	freopen("sdo.in", "r", stdin);
	freopen("sdo.out", "w", stdout);

	scanf("%d %d", &n, &k);
	for (i = 1; i <= n; ++i)
	{
		scanf("%ld", &x);
		insert(x);
	}

	i = 1;
	while (i < k)
	{
		i <<= 1;
		if (M[i + 1] > M[i])
			i += 1;
			
	}
	
	if (i > k) i >>= 1;
	printf("%ld\n", M[i]);

	return 0;
}