Pagini recente » Cod sursa (job #2899188) | Cod sursa (job #1312891) | Cod sursa (job #2344488) | Cod sursa (job #2600008) | Cod sursa (job #2065752)
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int n,x,v[10000],i,poz[1000],m,y,nr,j;
void Up(int k, int m)
{
int t,f;
f=k;
t=f/2;
while(t && v[t]>v[f])
{
swap(v[t],v[f]);
f=t;
t=f/2;
}
}
void Down(int k, int m)
{
int t,f;
t=k;
f=k*2;
while(f<=m)
{
if(f<m)
{
if(v[f]<v[f+1]) f++;
}
if(v[t]<v[f])
{
swap(v[t],v[f]);
t=f;
f=f*2;
}
else
{
f=m+1;
}
}
}
void Delete(int k, int m)
{
v[k]=v[m];
m--;
if(k>1 && v[k]>v[k/2]) Up(k,n);
else Down(k,n);
}
void Inserare(int y)
{
m++;
v[m]=y;
Up(m,m);
}
int Minim()
{
int i,minn;
minn=v[1];
for(i=2;i<=m;i++)
{
if(v[i]<minn)
{
minn=v[i];
}
}
return minn;
}
int main()
{
fin>>n;
m=0;
nr=1;
for(i=1;i<=n;i++)
{
fin>>x;
if(x==1)
{
fin>>y;
Inserare(y);
poz[nr]=y;
nr++;
/*for(j=1;j<=m;j++)
{
cout<<v[j]<<" ";
}
cout<<"\n";*/
}
if(x==2)
{
fin>>y;
for(j=1;j<=m;j++)
{
if(v[j]==poz[y])
{
break;
}
}
Delete(j,m);
/*for(j=1;j<=m;j++)
{
cout<<v[j]<<" ";
}
cout<<"\n";*/
}
if(x==3)
{
fout<<Minim()<<"\n";
}
}
return 0;
}