Pagini recente » Cod sursa (job #2947499) | Cod sursa (job #1223585) | Cod sursa (job #2271939) | Cod sursa (job #36495) | Cod sursa (job #2618680)
#include <algorithm>
#include <array>
#include <fstream>
#include <iostream>
#include <vector>
auto main() noexcept -> int
{
std::ifstream f{ "heapuri.in" };
std::ofstream g{ "heapuri.out" };
std::vector<int> nums{};
std::array<int, 200'001> order{};
std::size_t idx{ 0 };
int n{ 0 };
f >> n;
nums.reserve(static_cast<std::size_t>(n));
order.fill(0);
for(int i = 0; i < n; ++i) {
int op{ 0 };
f >> op;
switch(op) {
case 1: {
int x{ 0 };
f >> x;
nums.push_back(x);
order[++idx] = x;
std::push_heap(nums.begin(), nums.end(), std::greater<>{});
break;
}
case 2: {
std::size_t index{ 0 };
f >> index;
auto& num = *std::find(nums.begin(), nums.end(), order[index]);
std::swap(num, nums.back());
nums.pop_back();
std::make_heap(nums.begin(), nums.end(), std::greater<>{});
break;
}
case 3: {
g << nums.front() << '\n';
}
default: {
break;
}
}
}
}