Pagini recente » Cod sursa (job #670015) | Cod sursa (job #1809085) | Cod sursa (job #785729) | Cod sursa (job #1830622) | Cod sursa (job #2734437)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define NMAX 2000010
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int main() {
vector<pair<int, int>> pq;
int index = 1;
int n;
fin >> n;
for (int i = 0; i < n; i++) {
int operatie;
int numar;
fin >> operatie;
if (operatie == 1) {
fin >> numar;
if (index == 1) {
pq.push_back({ numar,index++ });
}
else if (numar < pq[0].first) {
pq.push_back({ numar,index++ });
swap(pq[0], pq[pq.size() - 1]);
}
else {
pq.push_back({ numar,index++ });
}
}
else if (operatie == 2) {
fin >> numar;
for (int i = 0; i < pq.size(); i++) {
if (pq[i].second == numar) {
swap(pq[i], pq[pq.size() - 1]);
pq.pop_back();
break;
}
}
pair<int, int> min = pq[0];
for (int i = 0; i < pq.size(); i++) {
if (pq[i].first < min.first) {
min = pq[i];
}
}
for (int i = 0; i < pq.size(); i++) {
if (pq[i] == min) {
swap(pq[0], pq[i]);
break;
}
}
}
else if (operatie == 3) {
fout << pq[0].first<<'\n';
}
}
}