Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- void MinSupport(std::vector<int>& stack, std::vector<int>& min_stack, int num) {
- stack.push_back(num);
- if (min_stack.empty() || min_stack.back() > num) {
- min_stack.push_back(num);
- }
- else {
- min_stack.push_back(min_stack.back());
- }
- }
- void Queue(std::vector<int>& s_1, std::vector<int>& s_1_min, std::vector<int>& s_2, std::vector<int>& s_2_min, int num){
- if (num != 0) {
- MinSupport(s_1, s_1_min, num);
- return;
- }
- if (s_2.empty()) {
- if (s_1.empty()) {
- std::cout << -1 << std::endl;
- return;
- }
- for (auto n : s_1) {
- MinSupport(s_2, s_2, n);
- }
- s_1.clear();
- std::cout << s_2_min.back() << std::endl;
- s_2.pop_back();
- s_2_min.pop_back();
- return;
- }
- std::cout << std::min(s_1_min.back(), s_2_min.back()) << std::endl;
- s_2.pop_back();
- s_2_min.pop_back();
- }
- int main() {
- std::vector<int> s_1, s_1_min;
- std::vector<int> s_2, s_2_min;
- int operations_amount;
- std::cin >> operations_amount;
- for (int i = 0; i < operations_amount; ++i) {
- int num;
- std::cin >> num;
- Queue(s_1, s_1_min, s_2, s_2, num);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement