- if (it != alloc.end()) { // resource selected by some player, fair share depends on rho
- int player = *(it->second.begin()); // equilibrium assures that every player receives the same, use one of them to
- // calculate the fair sharing for resource r
- if (rho[player] < 0) { // negative rho doesn't make sense, consider the resource is saturated in this case
- fair_sharing[r] = get_maxmin_share(r);
- } else {
- fair_sharing[r] = maxA_(r, player) * rho[player];
+ if (it != alloc.end()) { // resource selected by some player, fair share depends on rho
+ double min_share = std::numeric_limits<double>::max();
+ for (int p : it->second) {
+ double share = A_(r, p) * rho[p];
+ min_share = std::min(min_share, share);