Advertisement
Korotkodul

2_D

Oct 25th, 2023 (edited)
605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | None | 0 0
  1. #include <cmath>
  2. #include <iostream>
  3. #include <vector>
  4. #include <queue>
  5. #include <deque>
  6. #include <string>
  7.  
  8. using std::cin;
  9. using std::cout;
  10. using std::max;
  11. using std::min;
  12. using std::string;
  13. using std::vector;
  14. using std::queue;
  15. using std::deque;
  16. //sample-потестить: как добавлять и удалать из deque mini
  17. int main() {
  18.   std::ios::sync_with_stdio(false);
  19.   std::cin.tie(0);
  20.   std::cout.tie(0);
  21.   queue<int> qu;
  22.   deque<int> mini;
  23.   int req;
  24.   cin >> req;
  25.   int cnt = 0;
  26.   for (int go = 0; go < req; ++go) {
  27.     string ask;
  28.     cin >> ask;
  29.     if (ask == "enqueue") {
  30.       cnt++;
  31.       int nmb; cin >> nmb;
  32.       qu.push(nmb);
  33.       cout << "ok\n";
  34.       while (!mini.empty() && mini.back() > nmb) {
  35.         mini.pop_back();
  36.       }
  37.       mini.push_back(nmb);
  38.     } else if (ask == "dequeue") {
  39.       if (qu.empty()) {
  40.         cout << "error\n";
  41.         continue;
  42.       }
  43.       cout << qu.front() << "\n";
  44.       if (mini.front() == qu.front()) {
  45.         mini.pop_front();
  46.       }
  47.       qu.pop();
  48.       cnt--;
  49.     } else if (ask == "front") {
  50.       if (qu.empty()) {
  51.         cout << "error\n";
  52.         continue;
  53.       }
  54.       cout << qu.front() << "\n";
  55.     } else if (ask == "size") {
  56.       cout << cnt << "\n";
  57.     } else if (ask == "clear") {
  58.       while (!qu.empty()) {
  59.         qu.pop();
  60.       }
  61.       while (!mini.empty()) {
  62.         mini.pop_back();
  63.       }
  64.       cnt = 0;
  65.     } else if (ask == "min") {
  66.       if (cnt == 0) {
  67.         cout << "error\n";
  68.         continue;
  69.       }
  70.       cout << mini.front() << "\n";
  71.     }
  72.   }
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement