Advertisement
CyberN00b

Untitled

Mar 21st, 2023
505
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include <iomanip>
  2. #include <iostream>
  3. #include <set>
  4. #include <unordered_set>
  5. #include <vector>
  6. using namespace std;
  7.  
  8. int main() {
  9.     long long int n, m, q;
  10.     cin >> n >> m >> q;
  11.     vector<unordered_set<long long int>> data_and_servers(n);
  12.     set<pair<long long int, long long int>> vals;
  13.     vector<int> data(n, 0);
  14.     for (long long i = 0; i < n; ++i) {
  15.         vals.insert({0, i});
  16.     }
  17.     for(int i = 1; i <= q; ++i) {
  18.         string s;
  19.         cin >> s;
  20.         if(s == "RESET") {
  21.             int x;
  22.             cin >> x;
  23.             vals.erase({data[x - 1] * (m - data_and_servers[x - 1].size()), x - 1});
  24.             data[x - 1]++;
  25.             data_and_servers[x - 1].clear();
  26.             vals.insert({data[x - 1] * m, x - 1});
  27.         }
  28.         else if(s == "DISABLE") {
  29.             int x1, x2;
  30.             cin >> x1 >> x2;
  31.             if (!data_and_servers[x1 - 1].contains(x2)) {
  32.                 vals.erase({data[x1 - 1] * (m - data_and_servers[x1 - 1].size()), x1 - 1});
  33.                 data_and_servers[x1 - 1].insert(x2);
  34.                 vals.insert({data[x1 - 1] * (m - data_and_servers[x1 - 1].size()), x1 - 1});
  35.             }
  36.         }
  37.         else if(s == "GETMAX") {
  38.             auto it = vals.end();
  39.             --it;
  40.             if (it != vals.begin()) {
  41.                 auto t_it = it;
  42.                 --t_it;
  43.                 if (t_it->first == it->first) {
  44.                     it = vals.lower_bound({it->first, 0});
  45.                 }
  46.             }
  47.             cout << it->second + 1 << endl;
  48.         }
  49.         else if (s == "GETMIN") {
  50.             cout << (vals.begin())->second + 1 << endl;
  51.         }
  52.     }
  53.     return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement