Cod sursa(job #1237358)

Utilizator victor_crivatCrivat Victor victor_crivat Data 3 octombrie 2014 21:36:00
Problema Heapuri Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
using namespace std;

int i,j,m,n,a,b,k;
struct jmecherie
{int valoare;
int ordine;
};
jmecherie h[100000];
void del(int b)
{int i;
    for (i=b+1;i<=k;i++)
    h[i-1]=h[i];
    k--;
}
void swap(int i,int j)
{jmecherie aux;
    aux=h[i];
h[i]=h[j];
h[j]=aux;
}
void heapup(int poz)
{int i;
i=poz/2;
if (h[i].valoare>h[poz].valoare) {swap(i,poz);
heapup(i);}
}
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int main()
{f>>n;
for (i=1;i<=n;i++)
{f>>a;
if (a!=3) f>>b;
    if (a==1) {k++;
               h[k].valoare=b;
               h[k].ordine=k;
               heapup(k);
               }
    if (a==2) {
               for (j=1;j<=k;j++) if (h[j].ordine==b) del(j);
               for (j=2;j<=k;j++) heapup(j);
               }
               if (a==3) g<<h[1].valoare<<'\n';

}
return 0;
}