Pagini recente » Cod sursa (job #1155949) | Cod sursa (job #2730714) | Cod sursa (job #2797930) | Cod sursa (job #2216648) | Cod sursa (job #2068708)
#include <fstream>
using namespace std;
long long h[500010],i,n,m;
void up(int p)
{
if(p>1&&h[p/2]>h[p])
{
swap(h[p],h[p/2]);
up(p/2);
}
}
void down(int p)
{
if(p*2+1<=n&&(h[p*2]<h[p]||h[p*2+1]<h[p]))
{
if(h[p*2+1]<h[p*2])
{
swap(h[p],h[p*2+1]);
down(p*2+1);
}
else
{
swap(h[p],h[p*2]);
down(p*2);
}
}
else if(p*2<=n&&h[p*2]<h[p])
{
swap(h[p],h[p*2]);
}
}
void adaug (int x)
{
h[++n]=x;
up(n);
}
void del(int p)
{
swap(h[p],h[n--]);
up(p);
down(p);
}
int main()
{
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
fin>>m;
int x;
for(i=1;i<=m;i++)
{
fin>>x;
adaug(x);
}
for(i=1;i<=m;i++)
{
fout<<h[1]<<" ";
del(1);
}
return 0;
}