Pagini recente » Cod sursa (job #2503737) | Cod sursa (job #2090000) | Cod sursa (job #3215496) | Cod sursa (job #3141167) | Cod sursa (job #672378)
Cod sursa(job #672378)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
struct elem{int val, nr_ord;}x,y[200000];
struct comp
{bool operator() ( elem &A, elem &B )
{return ( A.val > B.val ); // defineste ordinea inversa celei implicite (primul element va avea cea mai MICA valoare)
}
};
priority_queue< elem, vector< elem >, comp > Q;
int n,c,nr,cor=1,j;
int main()
{f>>n;
for(register int i=1;i<=n;i++)
{f>>c;
if(c==1){f>>x.val;
nr++;
x.nr_ord=nr;
Q.push(x);
}
if(c==2){int k;
f>>k;
cor=1;
j=0;
while(!Q.empty() && cor){x=Q.top(); Q.pop();
if(x.nr_ord==k)cor=0;
else y[++j].val=x.val,y[j].nr_ord=x.nr_ord;
}
for(register int e=1;e<=j;e++)Q.push(y[e]);
}
if(c==3){x=Q.top();
g<<x.val<<'\n';
}
}
return 0;
}