Pagini recente » Cod sursa (job #2506875) | Cod sursa (job #2380825) | Cod sursa (job #587675) | Cod sursa (job #1623201) | Cod sursa (job #1799046)
#include <fstream>
using namespace std;
int con,aux,o,n,x;
int v[500003];
ifstream fin("heap.in");
ofstream fout("heap.out");
void adaug(int x)
{
con++;
int m=con;
v[m]=x;
while(v[m/2]>v[m]&&m/2!=0)
{
aux=v[m/2];
v[m/2]=v[m];
v[m]=aux;
m=m/2;
}
}
void elim(int x)
{
fout<<v[1]<<" ";
v[1]=v[con];
o=1;
while(o*2+1<=con&&(v[o]>v[o*2+1]||v[o]>v[o*2]))
{
if(v[o*2+1]<v[o*2])
{
aux=v[o*2+1];
v[o*2+1]=v[o];
v[o]=aux;
o=o*2+1;
}
else
{
aux=v[o*2];
v[o*2]=v[o];
v[o]=aux;
o=o*2;
}
}
con--;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>x;
adaug(x);
}
for(int i=1;i<=n;i++)
{
elim(x);
}
return 0;
}