Pagini recente » Cod sursa (job #2466558) | Cod sursa (job #3164436) | Cod sursa (job #2917483) | Cod sursa (job #2213363) | Cod sursa (job #3131947)
#include <iostream>
#include <fstream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ifstream f("heapuri.in");
ofstream g("heapuri.out");
int N;
f >> N;
vector<int> heap; // Vectorul în care vom stoca elementele heap-ului
set<int> distinctElements; // Multimea elementelor distincte din heap
for (int i = 0; i < N; i++) {
int cod;
f >> cod;
if (cod == 1) {
int x;
f >> x;
heap.push_back(x);
distinctElements.insert(x);
push_heap(heap.begin(), heap.end(), greater<int>());
} else if (cod == 2) {
int x;
f >> x;
auto it = distinctElements.find(x);
if (it != distinctElements.end()) {
// Eliminăm elementul din multimea distinctElements
distinctElements.erase(x);
// Căutăm elementul în heap și îl eliminăm
auto heapIt = find(heap.begin(), heap.end(), x);
if (heapIt != heap.end()) {
// Rearanjam heap-ul după eliminarea elementului
heap.erase(heapIt);
make_heap(heap.begin(), heap.end(), greater<int>());
}
}
} else if (cod == 3) {
// Afișăm elementul minim din heap
g << *(distinctElements.begin()) << "\n";
}
}
f.close();
g.close();
return 0;
}