Pagini recente » Cod sursa (job #1674440) | Cod sursa (job #904990) | Cod sursa (job #842230) | Cod sursa (job #2940120) | Cod sursa (job #1333972)
#include <cstdio>
#define nmax 100
using namespace std;
FILE *f1=fopen("heapuri.in","r"),*f2=fopen("heapuri.out","w");
int H[nmax],ordine[nmax];
int n;
// === Inserare in Heap ===
void inserareInHeap(int i,int n)
{
int v=H[i],tata=i,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;
}
int nr;
int main()
{
fscanf(f1,"%d",&nr);
for(int i=1;i<=nr;i++)
{
int optiune;
fscanf(f1,"%d",&optiune);
if(optiune==1)
{
// === Insereaza ===
int x;
fscanf(f1,"%d",&x);
H[++n]=x;
for(int k=n/2;k;k--)
inserareInHeap(k,n);
ordine[n]=x;
}
else if(optiune==2)
{
// === Sterge ===
int x;
fscanf(f1,"%d",&x);
int j;
for(j=1;j<=n;j++)
if(H[j]==ordine[x])break;
H[j]=H[n--];
inserareInHeap(j,n);
}
else
{
// === Afiseaza minimul ===
fprintf(f2,"%d\n",H[1]);
}
}
fclose(f1);
fclose(f2);
return 0;
}
//Our greatest weakness lies in giving up. The most certain way to succeed is always to try just one more time.