add function that compute efficiency without separating positive and negative weights