Pagini recente » Cod sursa (job #60070) | Cod sursa (job #2468286) | Cod sursa (job #2557300) | Cod sursa (job #542265) | Cod sursa (job #1485865)
#include <fstream>
#include <cassert>
#include <map>
using namespace std;
ifstream fi ("heapuri.in");
ofstream fo ("heapuri.out");
class Heap {
private:
map <int, int> Heap1;
map <int, int> Heap2;
int poz;
public:
Heap() { poz = 0; }
void insert(int val) {
Heap1[++ poz] = val;
Heap2[val] = poz;
}
void erase(int i) {
map<int, int> :: iterator it = Heap1.find(i);
Heap2.erase(Heap1[i]);
Heap1.erase(it);
}
int minim() {
return Heap2.begin() -> first;
}
} H;
int main() {
int N;
for( fi >> N; N; -- N ) {
int op, param;
fi >> op;
switch(op) {
case 1: {
fi >> param;
H.insert(param);
break;
}
case 2: {
fi >> param;
H.erase(param);
break;
}
case 3:
fo << H.minim() << '\n';
}
}
fi.close();
fo.close();
return 0;
}