Simple Implementation plus explanation!!
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        // 0 1 2 3 4\n        \n        set<int>freeServer; // at a time which server was busy\n        // now my approach was this \n        // will take ith request find the base server required then i will do lower bound in the free \n        // server list if any server is found assign it the task ans if not \n        // then just assign the lowest server possible to us\n        // if both not present then ignore the request\n        set<pair<int,int>>assignedServer;\n        // first is represnting the time at which it gone a free and second is which server is gone a free \n        // now why take set as i wnated them to sorted in incresig order\n        vector<int>loadH(k,0);\n        for(int i=0;i<k;i++) freeServer.insert(i);\n        vector<int>ans;\n        int currTime=0;\n        int n=arrival.size();\n        for(int i=0;i<n;i++){\n            currTime=arrival[i];\n            // now i have to free the server if possible\n           for(auto it=assignedServer.begin();it!=assignedServer.end();){\n               if(it->first<=currTime){\n                   freeServer.insert(it->second);\n                   assignedServer.erase(it++);\n               }\n               else break;\n           }\n           int baseServer=i%k;\n           bool po=1;\n            // try to find in ahead list\n            auto it=freeServer.lower_bound(baseServer);\n            if(it==freeServer.end()){\n                if(!freeServer.empty()){\n                    it=freeServer.begin();\n                }\n                else po=0;\n            }\n            if(po){\n                int server=(*it);\n                freeServer.erase(server);\n                assignedServer.insert({currTime+load[i],server});\n                loadH[server]++;\n            }\n        }\n        \n        int maxi=-1e9;\n        for(int i=0;i<k;i++) maxi=max(maxi,loadH[i]);\n        for(int i=0;i<k;i++){\n            if(loadH[i]==maxi) ans.push_back(i);\n        }\n        return ans;\n    }\n};\n```
['C++']