Set + priority queue
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\npublic:\n    vector<int> busiestServers(int k, vector<int>& arrival, vector<int>& load) {\n        int n = load.size();\n        if (k >= n) {\n            vector<int> a(n, 0);\n            for (int i = 0; i < n; i++) a[i] = i;\n            return a;\n        }\n        auto cmp = [](vector<int>& a, vector<int>& b) {\n            return a[0] > b[0];\n        };\n        vector<int> numrq(k, 0);\n        priority_queue<vector<int>, vector<vector<int>>, decltype(cmp)> busy(cmp);\n        set<int> free;\n        for (int i = 0; i < k; i++) free.insert(i);\n        for (int i = 0; i < n; i++) {\n            int time = arrival[i];\n            while (!busy.empty() && busy.top()[0] <= time) {\n                int sv = busy.top()[1];\n                busy.pop();\n                free.insert(sv);\n            }\n            int x = i%k;\n            // find next server\n            auto next = free.lower_bound(x);\n            if (next != free.end()) {\n                busy.push({time + load[i], *next});\n                numrq[*next]++;\n                free.erase(next);\n            } else {\n                auto pre = free.lower_bound(0);\n                if (pre != free.end()) {\n                busy.push({time + load[i], *pre});\n                numrq[*pre]++;\n                free.erase(pre);                    \n                }\n            }\n        }\n        int max_r = *max_element(numrq.begin(), numrq.end());\n        vector<int> ans;\n        for (int i = 0; i < k; i++) {\n            if (numrq[i] == max_r) ans.push_back(i);\n        }\n        return ans;\n    }\n};\n```
['Heap (Priority Queue)', 'Ordered Set', 'C++']