Cod sursa(job #771499)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 26 iulie 2012 09:33:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500001], i, n, c, p, aux;
int main(){
	f>>n;
	for(i=1; i<=n; i++)
		f>>v[i];
	f.close();
	for(i=2; i<=n; i++)
	{
		c=i;
		p=i/2;
		while(v[c]>v[p] && c!=1)
		{
			aux=v[c];
			v[c]=v[p];
			v[p]=aux;
			c=p;
			p=p/2;
		}
	}
	for(i=n; i>1; i--)
	{
		aux=v[1];
		v[1]=v[i];
		v[i]=aux;
		p=1;
		c=p*2;
		while(c<i)
		{
			if(c+1<i && v[c]<v[c+1])
				c++;
			if(v[c]>v[p])
			{
				aux=v[c];
				v[c]=v[p];
				v[p]=aux;
				p=c;
				c=p*2;
			}
			else break;
		}
	}
	for(i=1; i<=n; i++)
		g<<v[i]<<' ';
	g.close();
	return 0;
}