Pagini recente » Cod sursa (job #2466211) | Cod sursa (job #2289632) | Cod sursa (job #1709430) | Cod sursa (job #1303778) | Cod sursa (job #1894780)
#include <fstream>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int a[200005],n=0,b[200005],k;
void comb(int x)
{int t,f,v=a[x];
t=x;
f=t*2;
while(f<=n)
{ if(f<n)
if(a[f] > a[f]+1) f++;
if(v>a[f])
{ a[t]=a[f];
t=f;
f=2*f;
}
else f=n+1;
}
a[t]=v;
}
void stergere( int x)
{ int i;
for(i=1;i<=n;++i)
if(a[i]==x) break;
if(i!=n)
{
a[i]=a[n];
n--;
comb(i);
}
else n--;
}
void ins(int x)
{ a[++n]=x;
int i=n/2,j=n;
while(i>=1)
{ if( a[i] > x )
{ a[j]=a[i];
j=i;
i=i/2;
}
else break;
}
a[j]=x;
}
int main()
{ int m,i,op,x;
fin>>m;
for(i=1;i<=m;++i)
{ fin>>op;
if(op==1)
{ fin>>x;
b[++k]=x;
ins(x);
}
if(op==3)
fout<<a[1]<<"\n";
if(op==2)
{ fin>>x;
stergere(b[x]);
}
}
return 0;
}