Cod sursa(job #369662)

Utilizator Mishu91Andrei Misarca Mishu91 Data 29 noiembrie 2009 01:28:38
Problema Statistici de ordine Scor Ascuns
Compilator cpp Status done
Runda Marime 0.64 kb
#include <fstream>

using namespace std;

#define MAX_N 3000005

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

int N, K, H[MAX_N];

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

	for(int i = 1; i <= K; ++i)
	{
		int j = i;

		while((j >> 1) && H[j] > H[j >> 1])
		{
			swap(H[j], H[j >> 1]);
			j >>= 1;
		}
	}

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

			while(1)
			{
				int j = 2*k;
				if(j > K) break;
				if(j+1 <= K && H[j+1] > H[j]) ++j;
				if(H[k] > H[j]) break;

				swap(H[k], H[j]);
				k = j;
			}
		}
	}

	fout << H[1];
}