Pagini recente » Cod sursa (job #189613) | Cod sursa (job #304202) | Cod sursa (job #917279) | Cod sursa (job #625916) | Cod sursa (job #825206)
Cod sursa(job #825206)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int heap[600000];
int j=0,aux;
void add()
{
int x;
fin>>x;
heap[++j]=x;
int j2;
j2=j;
while(j>1&&heap[j/2]>heap[j])
{
aux=heap[j/2];
heap[j/2]=heap[j];
heap[j]=aux;
j=j/2;
}
j=j2;
}
void remove()
{ int u,p;
fout<<heap[1]<<" ";
heap[1]=heap[j];
heap[j]=0;
j--;
u=1;
while(2*u<=j&&(heap[2*u]<heap[u]||((2*u+1<=j)&&heap[2*u+1]<heap[u]) ) )
{
if(2*u+1<=j&&heap[2*u+1]<heap[2*u])p=2*u+1;
else p=2*u;
aux=heap[p];
heap[p]=heap[u];
heap[u]=aux;
u=p;
}
}
int main()
{
int n,i;
fin>>n;
for(i=1;i<=n;i++)
add();
for(i=1;i<=n;i++)
remove();
return 0;
}