Mai intai trebuie sa te autentifici.
Cod sursa(job #3124124)
Utilizator | Data | 26 aprilie 2023 23:22:55 | |
---|---|---|---|
Problema | Heapuri | Scor | 40 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.5 kb |
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
// #include <queue>
// #define maxel 1000000000
std::ifstream fin("heapuri.in");
std::ofstream fout("heapuri.out");
int main()
{
// std::priority_queue<int, std::vector<int>, std::greater<int>> minHeap;
std::vector<int> vec;
std::vector<int> deleted;
std::vector<int> minHeap;
int n, operation, value;
// int cnt = 0;
fin >> n;
for (int i = 0; i < n; ++i) {
fin >> operation;
if (operation == 1) {
fin >> value;
vec.push_back(value);
}// 7 9 2
else if (operation == 2) {
fin >> value;
deleted.push_back(vec[value - 1]);
// vec.erase(vec.begin() + value - 1 - cnt);
// ++cnt;
}
else if (operation == 3) {
minHeap = vec;
std::make_heap(minHeap.begin(), minHeap.end(), std::greater<int>());
int ok;
do {
ok = 0;
for (auto d : deleted)
if (minHeap.front() == d)
ok = 1;
if (ok == 1) {
std::pop_heap(minHeap.begin(), minHeap.end()); minHeap.pop_back();
std::make_heap(minHeap.begin(), minHeap.end(), std::greater<int>());
}
}while(ok == 1);
fout << minHeap[0] << '\n';
}
}
return 0;
}