Cod sursa(job #751695)

Utilizator cnt_tstcont teste cnt_tst Data 26 mai 2012 17:48:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int V[500010], N, i,aux;

void insert(int i) {
	int p,c,aux;
	c = i;
	p = i/2;
	while (p!=0 && V[c] > V[p]) {
		aux = V[c];
		V[c] = V[p];
		V[p] = aux;
		c = p;
		p = p/2;
	}
}

int corect(int i) {
	int c, p, aux;
	p = 1;
	c = 2*p;
	while (c <= i) {
		if (c+1 <= i && V[c+1] > V[c])
			c++;
		if (V[p] < V[c]) {
			aux = V[p];
			V[p] = V[c];
			V[c] = aux;
		} else
			break;
		p = c;
		c = 2*c;
	}
}


int main() {
	f>>N;
	for (i=1;i<=N;i++) {
		f>>V[i] ;
		insert(i); //consider deja heap cu i-1 elemente si inserez pe v[i]
	}
	
	for (i=N;i>=2;i--) {
		aux = V[1];
		V[1] = V[i];
		V[i] = aux;
		corect(i-1); //cu cele i-1 elemente am heap stricat doar de v[1]
	}
	
	for (i=1;i<=N;i++)
		g<<V[i]<<" ";
	g.close();
	f.close();
}