Cod sursa(job #490238)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 5 octombrie 2010 17:14:14
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
using namespace std;
#define DIM 500001

ifstream fi ("algsort.in");
ofstream fo ("algsort.out"); 

int N, H[DIM];

void swap (int &a, int &b) {
	int x;
	x=a, a=b, b=x;
}

void heap1 () {
	fi >> N;
	for (int i=1; i<=N; ++i) {
		fi >> H[i];
		int poz = i;
		while (poz/2 >= 1 && H[poz] < H[poz/2]) {
			swap (H[poz], H[poz/2]);
			poz = poz/2;
		}
	}	
}

void heap2 () {
	for (int i=N; i>0; --i) {
		fo << H[1] << ' ';
		H[1] = H[i];
		int poz = 1;
		while (poz*2 < i) {
			poz = poz*2;
			if (poz+1 < i && H[poz] > H[poz+1]) poz++;
			if (H[poz] > H[poz/2]) break;
			swap (H[poz], H[poz/2]);			
		}
		
	}	
}

int main () {
	
	heap1 ();
	heap2 ();	
	
	return 0;
}