Pagini recente » Cod sursa (job #505795) | Cod sursa (job #374930) | Cod sursa (job #1175535) | Cod sursa (job #2111497) | Cod sursa (job #2746790)
#include <iostream>
#include <set>
#include <vector>
#include <fstream>
using namespace std;
/*
int main() {
multiset <int> my_set;
my_set.insert(1); // Insereaza o valoare.
my_set.insert(1);
if (my_set.find(1) != my_set.end()) { // Cauta o valoare.
printf("Am gasit 1 in set!\n");
}
else {
printf("1 nu se afla set!\n");
}
// Sterge o valoare din set. Daca aceasta se afla de
// mai multe ori in set, este stearsa numai o copie.
my_set.erase(my_set.find(1));
printf("Exista %d elemente in set\n", my_set.size());
my_set.insert(1);
my_set.insert(1);
// Sterge o valoare din set. Daca aceasta se afla de
// mai multe ori in set, sunt sterse toate copiile.
my_set.erase(1);
printf("Exista %d elemente in set\n", my_set.size());
my_set.insert(1);
my_set.insert(-3);
my_set.insert(7);
my_set.insert(-2);
my_set.insert(2);
// Valoarea minima.
multiset <int> ::iterator it = my_set.begin();
printf("Valoarea cea mai mica din set este %d\n", *it);
// Valoarea maxima.
it = my_set.end();
--it;
printf("Valoarea cea mai mare din set este %d\n", *it);
return 0;
}
*/
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
multiset<int> my_set;
vector<int> positions;
unsigned int n;
unsigned int operation;
int number;
int main()
{
fin >> n;
for (int i = 0; i < n; i++)
{
fin >> operation;
switch (operation)
{
case 1:
{
fin >> number;
my_set.insert(number);
positions.push_back(number);
} break;
case 2:
{
fin >> number;
my_set.erase(my_set.find(positions[number-1]));
} break;
default:
{
fout << *my_set.begin() << "\n";
} break;
}
}
}