Pagini recente » Cod sursa (job #577522) | Cod sursa (job #1815400) | Cod sursa (job #2690694) | Cod sursa (job #1868389) | Cod sursa (job #2153919)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int h[101],nh;
void urca (int p)
{
while ( p>1 && h[p] < h[p/2] )
{
swap(h[p],h[p/2]);
p/=2;
}
}
void coboara (int p)
{
int fs=2*p,fd=2*p+1,bun=p;
if (fs<=nh && h[fs] < h[bun])
bun=fs;
if (fd<=nh && h[fd] < h[bun])
bun=fd;
if (bun != p)
{
swap (h[p],h[bun]);
coboara (bun);
}
}
void adauga (int val)
{
h[++nh]=val;
urca(nh);
}
void sterge (int p)
{
swap(h[p],h[nh--]);
urca(p);
coboara (p);
}
int main()
{
int n,i,x,o;
f>>n;
for (i=1; i<=n; i++)
{
f>>o;
if (o==3)
{
g<<h[1]<<'\n';
sterge(1);
}
f>>x;
if (o==1)
{
adauga(x);
}
if (o==2)
{
sterge(x);
}
for (int j=1; j<=n; j++)
cout<<h[i]<<" ";
cout<<endl;
}
return 0;
}