C++ staightforward
```\n    vector busiestServers(int k, vector& arrival, vector& load) {\n        set freeServers;\n        for(int i=0;i<k;i++) freeServers.insert(i);\n        p
```\n    vector<int> busiestServers(int k, vector<int>& arrival, vector<int>& load) {\n        set<int> freeServers;\n        for(int i=0;i<k;i++) freeServers.insert(i);\n        priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> jobs; //complete time, server No.\n        vector<int> counter(k,0);\n        for(int i=0;i<arrival.size();i++){\n            const int t = arrival[i];\n            \n            // check done job, and free the servers\n            while(!jobs.empty() && jobs.top().first <= t){\n                auto [t_out, server] = jobs.top(); jobs.pop();\n                freeServers.insert(server);\n            }\n            \n            if(freeServers.empty()) continue;\n            \n            // assign job to a server\n            auto it = freeServers.lower_bound(i%k);\n            if(it == freeServers.end()) it = freeServers.begin();\n            const int server = *it;\n            freeServers.erase(it);\n            jobs.push(pair(t+load[i], server));\n            counter[server]++;\n        }\n        \n        const int maxCount = *max_element(counter.begin(), counter.end());\n        vector<int> res;\n        for(int i=0;i<k;i++) if(counter[i] == maxCount) res.push_back(i);\n        return res;\n    }
[]