Advertisement
sadov_a

Untitled

May 17th, 2024
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <set>
  3.  
  4. using std::cin, std::cout, std::endl;
  5.  
  6. int main() {
  7.     int q;
  8.     cin >> q;
  9.     std::multiset<int> elements;
  10.     auto median = elements.end();
  11.     int n = 0;
  12.     for (int op = 0; op < q; ++op) {
  13.         char type;
  14.         int x;
  15.         cin >> type >> x;
  16.         if (type == '+') {
  17.             elements.insert({x, op});
  18.             if (x >= *median && n % 2 == 0) {
  19.                 ++median;
  20.             } else if (x < *median && n % 2 == 1) {
  21.                 --median;
  22.             }
  23.             ++n;
  24.         } else {
  25.             auto it = elements.lower_bound(x);
  26.             if (it == median) {
  27.                 if (n % 2 == 0) {
  28.                     ++median;
  29.                 } else {
  30.                     --median;
  31.                 }
  32.             } else if (*it > *median && n % 2 == 1) {
  33.                 --median;
  34.             } else if (*it < *median && n % 2 == 0) {
  35.                 ++median;
  36.             }
  37.             elements.erase(it);
  38.             --n;
  39.         }
  40.         if (n == 0) {
  41.             cout << "set is empty" << endl;
  42.         } else {
  43.             cout << "median is " << *median << endl;
  44.         }
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement