Pagini recente » Cod sursa (job #2129069) | Cod sursa (job #1477064) | Cod sursa (job #2364940) | Cod sursa (job #1746636) | Cod sursa (job #855740)
Cod sursa(job #855740)
#include <fstream>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int a[1001],n,i,P[1001],x,y,nr,j;
void HeapUp (int poz)
{
if (poz==1) return;
if (a[poz/2]>a[poz])
{
int aux=a[poz/2];
a[poz/2]=a[poz];
a[poz]=aux;
aux=P[poz];
P[poz]=P[poz/2];
P[poz/2]=aux;
HeapUp(poz/2);
}
}
int PozMax (int x, int y)
{
if (a[x]<a[y]) return x;
return y;
}
void HeapDown (int poz)
{
int aux,pos;
if (poz*2>=n) return;
pos=PozMax(2*poz,2*poz+1);
if (a[poz]>a[pos])
{
aux=a[poz];
a[poz]=a[pos];
a[pos]=aux;
HeapDown(pos);
}
}
int main ()
{
f>>n;nr=0;
for (i=1;i<=n;i++)
{
f>>x;
if (x==1)
{
f>>a[++nr];
P[nr]=nr;
HeapUp(nr);
}
else
if (x==2)
{
f>>y;
for (j=1;j<=n;j++)
if (y==P[j]) break;
a[j]=a[nr];
nr--;
HeapDown(j);
}
else
if (x==3)
{
g<<a[1]<<'\n';
}
}
return 0;
}