set + priority_queue + unordered_map solution (C++)
Code

# Code
```cpp []
class Solution {
public:
    vector<int> busiestServers(int k, vector<int>& arrival, vector<int>& load) {
        vector <int> ans;
        priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
        unordered_map <int,int> count;
        set<int> currAv;
        for(int i = 0; i < k && i < arrival.size(); i++){
            pq.push({arrival[i] + load[i], i});
            count[i]++;
        }
        for(int i = k; i < arrival.size(); i++){
            if(currAv.size() > 0 || (pq.size()>0 && arrival[i] >= pq.top().first)){
                while(pq.size() > 0 && arrival[i] >= pq.top().first){
                currAv.insert(pq.top().second);
                pq.pop();
                }
                
                auto find = lower_bound(currAv.begin(),currAv.end(), i%k);

                if(find == currAv.end())
                    find = currAv.begin();
                
                count[*find]++;
                pq.push({arrival[i] + load[i], *find});
                currAv.erase(find);
            }
        }
        int maxVal = INT_MIN;
        for(auto & it : count)
            maxVal = max(maxVal, it.second);
        for(auto & it : count){
            if(it.second == maxVal)
                ans.push_back(it.first);
        }
        return ans;
    }
};
```
['C++']