Pagini recente » Cod sursa (job #1319626) | Cod sursa (job #1903212) | Cod sursa (job #2232741) | Cod sursa (job #1503420) | Cod sursa (job #369956)
Cod sursa(job #369956)
//heapuri
#include<fstream.h>
int h[1000],n,a[1000],l,l2;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
void combheap(int i,int n);
void creareheap()
{
int i;
for(i=l2/2;i;i--)
combheap(i,l2);
}
void combheap(int i,int n)
{
int v=h[i];
int tata=i;
int fiu=2*i;
while(fiu<=n)
{
if(fiu<n)
if(h[fiu]>h[fiu+1]) fiu++;
if(v>h[fiu])
{
h[tata]=h[fiu];
tata=fiu;
fiu=fiu*2;
}
else fiu=n+1;
}
h[tata]=v;
}
void insert(int x)
{
l2++;
h[l2]=x;
l++;
a[l]=x;
creareheap();
}
void extract(int poz)
{
h[poz]=h[l2];
l2--;
creareheap();
}
void stergere(int x)
{
int i;
int ok=1;
for(i=1;i<=l2&&ok==1;i++)
{
if(a[x]==h[i]) ok=0;
}
extract(i-1);
}
void direct()
{
int o,c,i;
f>>n;
for(i=1;i<=n;i++)
{
f>>o;
if(o==1) { f>>c; insert(c); }
else if(o==2) { f>>c; stergere(c); }
else if(o==3) g<<h[1]<<endl;
}
}
int main()
{
direct();
return 0;
}