Cod sursa(job #1076297)

Utilizator AlexandravVoda Alexandra Ioana Alexandrav Data 10 ianuarie 2014 00:42:40
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int v[500001],nr;
ofstream g("algsort.out");


void urca(int poz)
{ while(poz>1 && v[poz]<v[poz/2])
	{ swap(v[poz],v[poz/2]);
	  poz/=2;
	}
}

void insert(int val)
{	nr++;
    v[nr]=val;
    urca(nr);
}

void coboara(int poz)
{int poz1;
while(poz*2+1<=nr && (v[poz]>v[poz*2] || v[poz]>v[poz*2+1]))
	{ poz1=poz*2;
	 if(v[poz1+1]<v[poz1])
		 poz1+=1;
	 swap(v[poz],v[poz1]);
	 poz=poz1;
	 }

if(poz*2==nr && v[poz*2]<v[poz])
	swap(v[poz],v[poz*2]);

}

void heapsort()
{
g<<v[1]<<" ";
v[1]=v[nr--];
coboara(1);
}
	
	
int main()
{int i,x, aux,n;
ifstream f("algsort.in");
f>>n;
for(i=1;i<=n;i++)
{
	f>>x;
	insert(x);
}
for(i=1;i<=n;i++)
heapsort();
f.close();
g.close();
}