Pagini recente » Cod sursa (job #2926117) | Cod sursa (job #2669428) | Cod sursa (job #2254640) | Cod sursa (job #1135952) | Cod sursa (job #2896036)
#include <iostream>
#include <fstream>
#include <set>
#include <vector>
std::ifstream input("heapuri.in");
std::ofstream output("heapuri.out");
std::set<int> heap_dubios;
int main()
{
int i, tip, x, n, k = 1, pos[200005];
input>>n;
for(i = 0; i < n; ++i)
{
input>>tip;
switch (tip)
{
case 1:
{
input>>x;
heap_dubios.insert(x);
pos[k++] = x;
break;
}
case 2:
{
input>>x;
heap_dubios.erase(pos[x]);
break;
}
case 3:
{
output<<*heap_dubios.begin()<<'\n';
break;
}
}
}
return 0;
}
//
//// tare ciudata platforma...
//int main()
//{
//// am nevoie de un set mai degraba decat un vector fiindca am unicitate si sortarea elem cresc :)
//// are sens unicitatea aici pt ca afisez minimul si atunci nu voi face multiset ci sset
//std::set<int> sweet_heap;
//// am nevoie de un vector in care sa retin elem inserat
//// ordinea o preia prin index
//std::vector<int> ordine;
// unsigned int n, i=0, op, x;
//
// //ocup pozitia 0 din vector fiindca nu am nevoie de ea la optiuni
// input >> n;
//// unsigned int ordine[n];
//// ordine.push_back(-10);
//
// for (;i<n; ++i) {
// input >> op;
// if (op == 1){
// input >> x;
//// ++index;
//// ordine[index]=x;
// sweet_heap.insert(x);
// ordine.push_back(x);
// }
// // pt optiunea 2 am stergerea al x-lea elem
// else if (op==2){
// input >> x;
// sweet_heap.erase(ordine[x]);
// }
// else if (op == 3) {
// // set.begin() imi ia cel mai mic elem
// output << *sweet_heap.begin() << std::endl;
// }
// }
//// input.close();
//// output.close();
// return 0;
//}