Very Easy  c++  solution using sets
\nclass Solution {\npublic:\n    vector<int> busiestServers(int k, vector<int>& arr, vector<int>& load) {\n        vector<int> ans(k);\n        set<int> free;\n
```\nclass Solution {\npublic:\n    vector<int> busiestServers(int k, vector<int>& arr, vector<int>& load) {\n        vector<int> ans(k);\n        set<int> free;\n        set<pair<int,int>> assigned;\n        \n        for(int i=0;i<k;++i)\n            free.insert(i);\n        \n        for(int i=0;i<arr.size();++i){\n            \n            \n            //check which servers are free at this moment.\n            for(auto it = assigned.begin(); it!=assigned.end() ;++it){\n                if(arr[i]>=(*it).first){\n                    free.insert((*it).second);\n                    assigned.erase(it);\n                }\n                else\n                    break;\n            }\n            \n            if(free.size()){\n                auto it = free.lower_bound(i%k);\n       \n\t            // cyclic manner, for example free servers are {1,4,6,7} and i%k==8 , so it will point to free.end() , so we will choose first element which is it.begin().\n\t\t        if(it==free.end()){\n                    it=free.begin();\n                }\n                int sno = (*it);\n                ++ans[sno];\n\t\t\t\t\n\t\t\t\t// request assigned to server no. sno , it will be inserted into assigned and erased from free servers.\n                assigned.insert({arr[i]+load[i],sno});\n                free.erase(it);\n            }\n        }\n        \n        //find servers that handled most number of requests\n\t\t\n        int mx=*max_element(ans.begin(),ans.end());\n        vector<int> res;\n        for(int i=0;i<k;++i){\n            if(ans[i]==mx)\n                res.push_back(i);\n        }\n        return res;\n    }\n};\n```
['C', 'Ordered Set']