Compute overall ranking
Jelly, 11 10 bytes
-1 byte by @Dennis
×⁵S€żị@€ỤỤ
Uses the fact that lists are lexicographically ordered.
This is a dyadic link that takes two arguments plus one input. The left argument is x, the rankings. The right argument is y, the tiebreaker. The input is the weights.
×⁵S€żị@€ỤỤ Dyadic function. Inputs: x, y
×⁵ Vectorized multiply x by the weights.
S Sum the rows.
This is the weighted ordering.
ż Zip with
ị@€ x indexed at y, mapped over x
ỤỤ and compute the inverse of the permutation vector that sorts that.
A list is sorted by its inverse permutation, so
this is the inverse of the inverse; i.e. the original permutation.
Try it here.