3
private TreeMap<Integer, List<String>> map;6
// Find suitable position for name in the list7
private int getIndex(String name, List<String> list) {8
int l = 0, r = list.size() - 1, m = 0;11
if (name.compareTo(list.get(m)) > 0) {17
return name.compareTo(list.get(l)) > 0 ? l + 1 : l;21
map = new TreeMap<>((a, b) -> (b - a));25
public void add(String name, int score) {26
List<String> list = map.getOrDefault(score, new ArrayList<>());27
int index = (list.size() == 0) ? 0 : getIndex(name, list);28
list.add(index, name);34
for (int score : map.keySet()) {35
if (index < map.get(score).size()) {37
return map.get(score).get(index);39
index -= map.get(score).size();